我在桌面应用程序中使用log4j
通常这可以顺利地工作。然而,最近Netbeans已经停止了日志记录(而Eclipse和Netbeans自己构建的jar都可以正常记录日志)。
使用log4j的调试模式,我只在Netbeans中使用错误的属性文件跟踪了log4j的原因。由于某种原因,它没有使用源文件夹中提供的属性文件,而是使用依赖项中的属性文件。
再次说明:这只发生在Netbeans中。有人知道我如何将log4j指向正确的文件吗?为什么会发生这种情况?
编辑:我现在手动喂养log4j正确的属性文件,虽然我仍然想知道Netbeans的奇怪优先级的原因。
文件log4j.xml
优先级高于log4j.properties
。
103 // if the user has not specified the log4j.configuration
104 // property, we search first for the file "log4j.xml" and then
105 // "log4j.properties"
因此,需要将当前属性文件转换为XML样式文件。例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN"
"log4j.dtd" >
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- console -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="TRACE" />
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern"
value="%d{yyyyMMdd-HHmmss.SSS} %-5p (%c.java:%L).%M - %m%n" />
</layout>
</appender>
<!-- file -->
<appender name="ROLLOUT" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="/tmp/output.log" />
<param name="maxFileSize" value="1MB" />
<param name="maxBackupIndex" value="5" />
<param name="threshold" value="DEBUG" />
<param name="encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern"
value="%d{yyyyMMdd-HHmmss.SSS} %-5p (%c.java:%L).%M - %m%n" />
</layout>
</appender>
<!-- categories -->
<category name="org.apache.commons">
<priority value="OFF" />
</category>
<category name="org.hibernate">
<priority value="OFF" />
</category>
<!-- root -->
<root>
<priority value="TRACE" />
<appender-ref ref="STDOUT" />
<appender-ref ref="ROLLOUT" />
</root>
</log4j:configuration>