JBoss Advent Calendar 2012の6日目のエントリです。今日はJBoss LogManager。
先日解説した通り、JBoss LogMangerはJUL(java.util.logging)の拡張です。じゃあどんなところが具体的に拡張されているの、というところをソースから読み取っていきましょう。と思って見てみたら、ほぼLog4jの機能を網羅したものでした。NDC、MDC、ログ出力環境を切り替えるLogContext、各種フィルタとログ書き込みを行うログハンドラが一通り。
ログ出力のフォーマット表記はLog4jのPatternLayoutをほぼ踏襲していますが、JBoss LogManagerのFormatStringParserを見るといくつかの追加のフォーマットがあり、その中にターミナルのカラーコード出力というのがありました。
というわけでやってみましょう。これは最新のJBoss LogManager 1.4系で追加されている機能であり、現在リリースされているJBoss AS 7.1系やEAP 6.0系のJBoss LogManagerは1.3系なので利用できません。AS 7.2およびEAP 6.1から利用可能になります。今回はJBoss AS7のmaster、つまり7.2の開発ブランチをビルドして試してみます。
ビルドして$JBOSS_HOME/standalone/configuration/standalone.xmlを見ると、なんとコンソールハンドラでデフォルトでカラーが有効になる指定がされています。%K{level}という指定はレベルに応じて出力全体を色付けする特殊指定です。
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
カラーはColorMapで定義されていて、デフォルトの%K{level}の出力のルールだとINFOは色付けなし、ERRORとWARNとDEBUGがそれぞれ赤、黄色、緑に色付けされるようになっています。
デフォルト設定だとコンソールはINFO以上の出力となっており、DEBUGは出力されないようになっているので、DEBUGを出力されるようにしてついでにWARNも発生させてみます。
Cool.