Technical Note/JAVA

Log4J에서 제공하는 AsyncAppender를 사용하기 위해서는 XML 설정을 사용해야만 한다.

Property 방식으로는 제공되지 않기 때문이다.

코드로도 가능한 듯하나, 사용할 일이 없을 듯하여 확인해보지는 않았다.

샘플은 다음과 같다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n" />
  </layout>
 </appender>
 <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
  <param name="BufferSize" value="500" />
  <appender-ref ref="stdout" />
 </appender>
 <logger name="com.spartanjava" additivity="false">
  <level value="debug" />
  <appender-ref ref="ASYNC" />
 </logger>
 <root>
  <level value="debug" />
  <appender-ref ref="ASYNC" />
 </root>
</log4j:configuration>

동일한 내용이 두번씩 출력된다면, additivity 속성이 false임을 확인한다.

Reference:
http://www.spartanjava.com/2009/asynchronous-logging-with-log4j/