アプリケーションをlog4j 1.2からlog4j2-2.8.1バージョンに移行中です。以下は、log4j.propertiesファイル内の既存の1.x構成です。
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に変換します。
<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>
変換後、次のエラーが発生します:
org.apache.logging.log4j.core.config.ConfigurationException: Arguments given for element RollingFile are invalid
任意の助けいただければ幸いです。
RollingFileアペンダーにロールオーバーのタイミング(トリガーポリシー)と、ロールオーバーの結果がどのようになるかを通知する必要があります。
一定の間隔(TimeBasedTriggeringPolicyまたはCronTriggeringPolicy)でロールオーバーする場合は、filePattern
を含むSimpleDateFormat
文字列を指定する必要があります。大きなファイル(SizeBasedTriggeringPolicy)を回避するためにロールオーバーする場合は、filePattern
containing を指定する必要があります%i
。
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式は1日に1回実行されます。
詳細およびその他の例については、ユーザーマニュアルのRollingFileアペンダーのセクションを参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加