Log4j2
設定ファイルの指定方法
すごく簡単にまとめると、下の順番で検索して最初に見つかったものを使用する。
- システムプロパティで指定されたファイル: VMの引数で
-Dlog4j2.configurationFile=/path/to/log4j2.xml
(2.10より前のバージョンではlog4j.configurationFile
) - クラスパス上の
log4j2-test.xml
- クラスパス上の
log4j2.xml
システムプロパティの代わりに環境変数LOG4J_CONFIGURATION_FILE
で指定できたり、
設定ファイルをxml以外で書けたりするが、おおざっぱにまとめると上の法則。
設定ファイルの変更を動的に反映する
<Configuration monitorInterval="30"> ... </Configuration>
ルート要素Configuration
の属性monitorInterval
で設定。
値は設定ファイルの変更をチェックする周期で、最小値は5(秒)。
値に0を設定すると動的反映が無効になる。
出力するログレベルの指定方法
下記のように指定すると、com.example
以下はwarn
、com.foobar
以下はdebug
、それ以外はinfo
レベルで出力。
<Loggers> <Logger name="com.example" level="warn" /> <Logger name="com.foobar" level="debug" /> <Root level="info"> <AppenderRef ref="FILE" /> </Root> </Loggers>
最近のお気に入り
最低限の設定をしたフォールバック用をjarに巻き込む。
- log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn" name="APP"> <Appenders> <Console name="CONSOLE" target="SYSTEM_OUT"> <PatternLayout pattern="%d{ABSOLUTE} [%t] %-5level %c{1} - %m%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="CONSOLE"/> </Root> </Loggers> </Configuration>
本番環境用の設定はシステムプロパティで指定する。
- log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <Configuration name="APP" status="warn"> <Appenders> <RollingFile name="FILE" filePattern="log/APP_%d{yyyy-MM-dd}.log"> <PatternLayout pattern="%d (%r) [%pid][%t] %-5level %c{1.} - %m%n" /> <TimeBasedTriggeringPolicy /> <DirectWriteRolloverStrategy maxFiles="10" /> </RollingFile> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="FILE" /> </Root> </Loggers> </Configuration>