ゆーたんのつぶやき

株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。

log4jの出力フォーマット指定



log4jでは出力フォーマットをプロパティファイルで指定できます。
今まで知らなかったのですが、置換可能なパラメータのうち、大文
字になっているものはパフォーマンス低下の要因になるので注意が
必要なんですね。確かに


%C FQCNを出力する
%F ログ出力箇所を含むファイル名を出力する
%M ログ出力箇所を含むメソッド名を出力する
%L ログ出力箇所の行番号を出力する
といったようにいずれも処理が遅くなりそうなパラメータ指定です。
一つでも大文字のパラメータがあれば、影響が出てしまうらしいの
で、(逆に二つあっても一つの時とあまり変わらない)要注意です。


結構基本的な注意点ですが、知らなかったので恥ずかしいです...
まだまだ精進が足らないなぁと痛感します。


世間一般ではjava.util.loggingよりもlog4jの方が支持されてい
るみたいですね。java.util.loggingにはログ出力をメモリに溜め
込めるMemoryHandlerがあって、これを使えば非同期にログを書き
込む処理が簡単に書けるので重宝していた時期もありました。です
が、出力フォーマットの方はFomatterクラスにベタ書きなので、
log4jと同じようなことを実現しようとすると独自のFormatterク
ラスを作成しないといけなそうです。非同期ログ出力はlog4jの場
合でもAsyncAppenderを使えばできそうなので、やっぱりlog4j
方が良いかなという感じがします。


ということで、今後はlog4jに一本化しようかと思っています。
あ、もちろんCommons Loggingでラップしますので、臨機応変
には行きたいと思います。