2017-11-24 561 views
2

私のアプリケーションをlog4j 1.2からlog4j2-2.8.1バージョンに移行中です。 log4j.propertiesファイルの既存の1.x構成は以下のとおりです。log4j 1.2からlog4j2への移行

log4j.appender.JSERRORFILE=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.JSERRORFILE.File=${log4j.loglocation}/jserror.log 
log4j.appender.JSERRORFILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.JSERRORFILE.layout.ConversionPattern=%d %-5p %c - %m%n 

log4j.logger.com.app.JavascriptLogger=ERROR,JSERRORFILE 
log4j.additivity.com.app.JavascriptLogger=false 

は、同等のXML設定log4j2.xmlにこれを変換さ:

org.apache.logging.log4j.core.config.ConfigurationException: Arguments given for element RollingFile are invalid 

任意の助けをいただければ幸いです:変換後

<RollingFile name="JSERRORFILE" fileName="${log-path}/jserror.log"> 
<PatternLayout pattern="%d %-5p %c - %m%n" /> 
</RollingFile> 

<Logger name="com.app.JavascriptLogger" level="ERROR" additivity="false"> 
<AppenderRef ref="JSERRORFILE"/> 
</Logger> 

、私は次のエラーを取得しておきます。

答えて

0

RollingFileアペンダにロールオーバー(ポリシーをトリガする)とロールオーバーの結果がどのように表示されるかを伝える必要があります。

一定の間隔(TimeBasedTriggeringPolicyまたはCronTriggeringPolicy)でロールオーバーする場合は、SimpleDateFormatのような文字列を含むfilePatternを指定する必要があります。大きなファイル(SizeBasedTriggeringPolicy)を防ぐためにロールオーバーする場合は、%iを含むfilePatternを指定する必要があります。

filePatternは、古い(ロールオーバーされた)ファイルを移動する場所の相対パスまたは絶対パスです。

例:火災上記

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="warn" name="MyApp" packages=""> 
    <Appenders> 
    <RollingFile name="RollingFile" fileName="logs/app.log" 
       filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> 
     <PatternLayout> 
     <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
     </PatternLayout> 
     <Policies> 
     <CronTriggeringPolicy schedule="0 0 0 * * ?"/> 
     <SizeBasedTriggeringPolicy size="250 MB"/> 
     </Policies> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="error"> 
     <AppenderRef ref="RollingFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

cron expression一日一回。

詳しくは、ユーザーマニュアルのRollingFile appender sectionを参照してください。

+0

私はほとんどの場合、TimeBasedTriggeringPolicyの代わりにDailyRollingFileAppenderの代わりにCronTriggeringPolicyを使用することをお勧めします。 – rgoers

+0

例を更新しました。この変更を行っている間、私はいくつかのことに気付きました。 Log4j2マニュアルには具体的なCronTriggeringPolicy具体例が必要です。 cron式は直感的ではありません。また、TimeBasedトリガーの場合、トリガーはfilePatternのみに依存します。 cron式では、filePatternをcron周波数と同期させる(メンテナンス時に同期させておく)ことは、ユーザーの責任です。これは、Log4j2マニュアルで明示的に言及する必要があります。 –

+0

私は上記のhttps://issues.apache.org/jira/browse/LOG4J2-2128 –

関連する問題