【问题标题】:log4j uses incorrect properties file in Netbeanslog4j 在 Netbeans 中使用了不正确的属性文件
【发布时间】:2014-09-05 20:45:35
【问题描述】:

我在桌面应用程序中使用 log4j。

通常这可以顺利进行。然而最近,Netbeans 已停止记录(而 Eclipse 和 Netbeans 自己构建的 jar 都可以正常记录)。

使用 log4j 的调试模式,我只在 Netbeans 中使用错误的属性文件追踪了 log4j 的原因。由于某种原因,它没有使用源文件夹中提供的文件,而是使用依赖项中的属性文件。

再次重申:这只发生在 Netbeans 中。有谁知道我如何将 log4j 指向正确的文件? 为什么会发生这种情况?

编辑:我现在手动为 log4j 提供正确的属性文件,尽管我仍然想知道 Netbeans 奇怪优先级的原因。

【问题讨论】:

    标签: java logging netbeans properties log4j


    【解决方案1】:

    文件log4j.xmlprioritylog4j.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>
    

    【讨论】:

    • 这可以解决问题,但我仍然不明白为什么 Netbeans 将依赖项中的属性文件优先于源文件夹中的属性文件。 PS:我现在通过手动让 log4j 读取正确的属性文件来解决这个问题,尽管您的解决方案更优雅。
    猜你喜欢
    • 2016-06-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    相关资源
    最近更新 更多