【问题标题】:Log4J configuration file ignored by IntelliJIntelliJ 忽略的 Log4J 配置文件
【发布时间】:2016-08-31 17:11:07
【问题描述】:

我正在尝试将自定义 Log4J 配置添加到使用 IntelliJ 2016.1 构建的大型软件项目中,但 IDE 似乎完全忽略了单元测试中提供的属性文件(log4j.properties 纯文本 - 不是 XML) .

更具体地说,运行针对JUnit 4、IntelliJ 编写的测试不会显示任何日志消息,除非转到Run | Edit configurations 菜单,然后通过VM Options 框向VM 提供以下参数:

  • -Dlog4j.configuration=/absolute/path/to/log4j.properties

奇怪的是指定文件的内容被完全忽略了。

因此,即使上述路径被替换为一个甚至不存在的文件的路径,或者该路径被完全删除,IntelliJ 仍会继续以与以前相同的布局打印日志消息,就好像它读取来自完全不同位置的属性。删除 -Dlog4j.configuration 参数会完全停止记录消息。就好像 IDE 将 -Dlog4j.configuration 理解为日志记录的 ON/OFF 开关,而不关心它提供的任何路径。

项目类路径中有多个Log4JSLF4J JAR 以及大量log4j.properties 文件,但即使删除所有后者也不会改变日志输出。显然-Dlog4j.configuration 指定的属性文件一直被Log4J 忽略。

有什么想法吗?

【问题讨论】:

    标签: logging log4j configuration-files


    【解决方案1】:

    解决方案其实很简单。本质上,该文件必须指定为URL,即必须提供如下配置:

    • -Dlog4j.configuration=file:///absolute/path/to/log4j.properties

    显然,前缀 file: 也可以使用,但没有完整的 URI 方案语法 file:///

    similar StackOverflow question 的回答中也描述了这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      相关资源
      最近更新 更多