【问题标题】:log4j.properties, where to put itlog4j.properties,放在哪里
【发布时间】:2013-03-09 15:39:41
【问题描述】:

根据 log4j 手册,我应该把 log4j.properties 放到 src 文件夹中。我将此文件复制到我认为会影响 log4j 的所有可能的地方。但是,这不起作用。

TestEM 类包含许多单元测试功能(我使用 testng)。我运行其中一个测试函数,它引用了 feedback.strategy 包中的一个类。

这里是 log4j.properties 文件的内容:

#log for class1
log4j.category.Demo1=DEBUG, dest1
log4j.appender.dest1=org.apache.log4j.FileAppender
log4j.appender.dest1.File=C:/Users/Asus/workspace/FeedbackProcess/logs/class1.log
log4j.appender.dest1.layout = org.apache.log4j.PatternLayout
log4j.appender.dest1.layout.ConversionPattern= %d %p [%t] (%c) \u2013 %m%n

【问题讨论】:

  • 放在应用类路径中
  • 这是duplicate
  • @GJ13:您的评论是正确的。问题是我的项目中没有像 log4j.category.Demo1 那样的 Demo1 类。当我将其更改为项目中的特定类时,它可以工作。您的解决方案也有效。所以请把它作为一个答案,以便我将其标记为正确。
  • @DuongThang 你的项目中不必有Demo1 类。也许它包含在依赖项之一中(例如 log4j jar)。现在如果 Demo1 类在内部使用 SLF4J 日志记录,那么 log4j 将被插入以根据配置处理日志记录。
  • @DuongThang 很高兴知道它有效。就像您建议的那样,我已将我的评论作为答案。

标签: java eclipse log4j


【解决方案1】:

您需要将 log4j.properties 文件放在应用程序类路径中。

【讨论】:

    【解决方案2】:

    将 log4j.properties 放在项目的 WEB-INF\classes 中。

    将log4j-xx.jar放到WEB-INF\lib下see here for details

    【讨论】:

      【解决方案3】:

      这主要是惯例和/或个人喜好的问题。我习惯的是在项目根目录(srctest旁边)再创建一个源目录(例如configresources),然后将log4j.properties那里。这可以通过右键单击新创建的文件夹并选择 Build Path -> Use as Source Folder 来完成。您也可以选择指定一些包含/排除模式。

      Log4j 默认在 类路径的根目录 上查找属性文件。通过上述设置,属性文件将被复制到输出目录,并且在开发过程中它将位于类路径的根目录中。

      在部署的后期,log4j.properties 也会被捆绑到 jar/war 文件中。您可能希望通过在运行时在类路径上指定备用配置文件夹来覆盖捆绑的属性。 (请参阅其他questiondocs 关于顺序条目优先于类路径)

      【讨论】:

        【解决方案4】:

        可能文件 log4j.properties 被正确读取,问题出在 log4j.properties 文件中的配置上。将此行添加到 log4j.properties 的开头是否有任何区别(假设您的类文件中有一些日志记录语句)

        log4j.rootLogger=DEBUG, dest1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-02
          • 2010-12-01
          • 2019-04-30
          • 1970-01-01
          • 1970-01-01
          • 2014-09-11
          • 2011-07-02
          • 1970-01-01
          相关资源
          最近更新 更多