tomcatでcommons-loggingとlog4jを利用するとWARNが出る。
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
システムプロパティにlog4j.configrationを指定すると解決。
JAVA_OPTS=-Dlog4j.configuration=file:///path/path/log4j.properties
tomcatのcatalina.propertiesに追加してもいい。
log4j.configuration=file://path/path/log4j.properties
または DOMConfigurator, PropertyConfigurator で直接ファイルを読みにいく
log4jはlog4j.propertiesファイルよりlog4j.xmlを優先して読みに行く。
どちらもある場合、log4j.xmlのみ読む。
log4j.xmlを配置した場合は、上記のエラーは出ない。
log4j.xml サンプル:
<?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.DailyRollingFileAppender">
<param name="File" value="ucs.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p %c{1}:%L - %m%n" />
</layout>
</appender>
<root>
<priority value ="info" />
<appender-ref ref="file"/>
</root>
<!-- パッケージ毎にログレベルを指定 この設定だとrootの設定と重なって2重にログ出力される -->
<category name="jp.xxx.xxx">
<priority value ="debug" />
<appender-ref ref="file"/>
</category>
</log4j:configuration>
Java側サンプル:
public class AccountService {
private static Logger log = Logger.getInstance(AccountService.class);
public void execute() {
log.info("INFOログ");
}
}
if(log.isDebugEnabled()) {
log.debug("debug log id=" + value);
}