Log4j2の使い方めも
Log4j2がよさそうだったので、使ってみたときのめも
- プロジェクトのURL
使い方
とりあえず使ってみる
package test; public class Test { private static Logger LOG = LogManager.getLogger(); public static void main(String[] args) { LOG.trace("Run {}!!", Test.class.getSimpleName()); } }
{}
を出力する内容の中に埋め込むと、引数を展開してくれる。超便利(^o^)
引数の型とか、気にしなくていい
出力結果
2014-08-24 09:21:16,950 | [main] | TRACE | test.Test | Run Test!!
インストール
ダウンロードページ
ダウンロードしたバイナリのzipを解凍したら、jarファイルがいろいろあるので↓のjarをclassparhに追加
あと設定ファイルをclasspathが通ってるディレクトリに↓のファイル名で配置する
- logj2.xml
設定
とりあえず参考の設定
<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{DEFAULT} | [%t] | %-5level | %c{36} | %msg%n"/> </Console> <File name="File" fileName="logs/normal_app.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} | [%t] | %-5level | %c{36} | %msg%n"/> </File> <RollingFile name="RollingFile" fileName="logs/rolling\_app.log" filePattern="logs/rolling\_app\_%d{yyyy-MM-dd}.log.gz"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} | [%t] | %-5level | %c{36} | %msg%n"/> <Policies> <TimeBasedTriggeringPolicy /> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="File" /> <AppenderRef ref="RollingFile" /> </Root> <Logger name="test" level="trace" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="File" /> <AppenderRef ref="RollingFile" /> </Logger> </Loggers> </configuration>
設定内容について
<Appenders> ~ </Appenders>
- ログ出力先の設定
<Console> ~ </Console>
- 標準出力にログを出力
<File> ~ </File>
- ファイルにログを出力
<RollingFile> ~ </RollingFile>
- ファイルにログを出力。ログローテーションをしてくれる。
- ログ出力先の設定
<Appenders> ~ </Appenders>
の属性についてname
<Logger> ~ </Logger>
の設定のときに、参照する名前
target
Console
のログ出力先SYSTEM_OUT
かSYSTEM_ERR
を設定。デフォルトはSYSTEM_ERR
fileName
File
とRollingFile
のログ出力先
<PatternLayout> ~ </PatternLayout>
- ログ出力のフォーマット。
pattern
属性にフォーマットを設定する%d{DEFAULT}
- 時間。
%d{yyyy-MM-dd HH:mm:ss.SSS}
のようにフォーマットを指定することもできる
- 時間。
%t
- ログ出力を実行したスレッド名
%-5level
- ログレベル
%c{}
- ログ出力を実行したクラス名。
{}
内に数字を指定すると、呼び出し元クラスからのパッケージを何階層まで表示するか指定できる。コストの高い処理なのでパフォーマンスに影響を与えるらしい。
- ログ出力を実行したクラス名。
%msg
- ログ内容
- ログ出力のフォーマット。
<Loggers> ~ </Loggers>
<Logger> ~ </Logger>
の設定をする要素
<Root> ~ </Root>
- RootLogger、全てのLoggerの親になるLogger
level
- ログ出力のレベル
- RootLogger、全てのLoggerの親になるLogger
<Logger> ~ </Logger>
- 個々のLoggerの設定
name
- Loggerの名前
- 個々のLoggerの設定
<AppenderRef />
ref
- ログ出力先の参照。
<Appenders> ~ </Appenders>
内で定義したname
属性を指定する
- ログ出力先の参照。
JSON形式やHTML形式でも出力できるらしいし、また何かわかったら追記。