log4j在Netbeans中使用了错误的属性文件



我在桌面应用程序中使用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>

相关内容

  • 没有找到相关文章

最新更新