2011-04-29 log4jのAsyncAppender
■[Java]log4jのAsyncAppender
先日書いたマルチスレッド下のログ出力性能測定 - torutkの日記への補足となります。コメントで、log4jには、AsyncAppenderがあると教えてもらい、log4jでAsyncAppenderを使ったときの性能計測を先日のブログに追加しました。
ここでは、AsyncAppenderを設定した際のメモを記述します。
設定ファイルはXMLが必要
log4jの設定は、PropertyConfiguratorを使って、Javaのプロパティ形式で記述するのが一般的(?)です。
しかし、AsyncAppenderを使うときは、設定をDOMConfiguratorを使って、XML形式で記述する必要があるとのことです。
log4jの初期化は、DOMConfiguratorのconfigureメソッドに設定ファイル(XML)を指定します。
import org.apache.log4j.xml.DOMConfigurator; : DOMConfigurator.configure("log4j.xml");
AsyncAppenderは、JavaのioライブラリでいえばBufferedOutputStreamのような役割で、本来のAppenderへのログ出力の前段に挟んで非同期化(ログ出力完了を待たずにバッファに書いたら復帰)するものです。
まずはふつうのFileAppenderに出す設定をXMLで記述し、AsyncAppenderは、FileAppenderを参照する記述を行います。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="FILE" class="org.apache.log4j.FileAppender"> <param name="threshold" value="trace"/> <param name="File" value="RunWithL4jAsync.log"/> <param name="Append" value="true"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss,SSS} %c%n %p %m%n"/> </layout> </appender> <appender name="ASYNC" class="org.apache.log4j.AsyncAppender"> <param name="threshold" value="trace"/> <appender-ref ref="FILE"/> </appender> <category name="jp.gr.java_conf.torutk.algorithm.prime.EratosthenesL4j"> <priority value="trace"/> <appender-ref ref="ASYNC"/> </category> <root> <priority value="info"/> <appender-ref ref="STDOUT"/> </root> </log4j:configuration>
AsyncAppenderを経由すると、%C、%Mが出ない
PatternLayoutで、%C(クラス名)と%M(メソッド名)を使用したところ、FileAppenderへの出力時はそれぞれ所定の文字列が入っていましたが、AsyncAppenderを経由してFileAppenderへ出したときには、この両者とも'?'となって所定の文字列が得られませんでした。
トラックバック - http://d.hatena.ne.jp/torutk/20110429/p1
リンク元
- 66 http://pipes.yahoo.com/pipes/pipe.info?_id=c9113ed44cd419a8abf321af5421a967
- 28 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBwQFjAA&url=http://d.hatena.ne.jp/torutk/20090115/p2&rct=j&q=string iterator&ei=bBm8TcapAonUvQOO1cXGBQ&usg=AFQjCNHXulSf5SRoousP1p4_v9ZTP-3jYw&sig2=CuwMwh8PX-tR22AkvGidjQ
- 26 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/torutk/20100910/p1&rct=j&q=hudson 操作可能なプログラムまたは%
- 20 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGHP_jaJP429&q=ie8+名前を付けて保存エラー
- 17 http://www.google.com/search?num=100&hl=ja&lr=lang_ja&ie=SJIS&oe=SJIS&q=NetBeans++7.0+
- 12 http://tochi-gis.cocolog-nifty.com/blog/2008/10/eclipse-ide-for.html
- 9 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=c+++プロセス名+取得&aq=f&aqi=g1&aql=&oq=
- 9 http://www.google.co.jp/url?sa=t&source=web&cd=2&ved=0CCAQFjAB&url=http://d.hatena.ne.jp/torutk/20100910/p1&rct=j&q='tar' は、内部コマンドまたは外部%E
- 8 http://www.02.246.ne.jp/~torutk/javahow2/swing.html
- 7 http://www.google.co.jp/