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ã¸åºããã¨ãã«ã¯ããã®ä¸¡è ã¨ã'?'ã¨ãªã£ã¦æå®ã®æååãå¾ããã¾ããã§ããã