Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging IntelliJ忽略了Log4J配置文件_Logging_Log4j_Configuration Files - Fatal编程技术网

Logging IntelliJ忽略了Log4J配置文件

Logging IntelliJ忽略了Log4J配置文件,logging,log4j,configuration-files,Logging,Log4j,Configuration Files,我试图向使用IntelliJ 2016.1构建的大型软件项目添加自定义的Log4J配置,但IDE似乎完全忽略了单元测试中提供的属性文件(Log4J.properties,纯文本-而非XML) 更具体地说,如果不转到Run | Edit configurations菜单,然后通过VM Options框向VM提供以下参数,则运行针对JUnit4、IntelliJ编写的测试不会显示任何日志消息: -Dlog4j.configuration=/absolute/path/to/log4j.proper

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

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

  • -Dlog4j.configuration=/absolute/path/to/log4j.properties
奇怪的是,指定文件的内容被完全忽略

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

在项目类路径中有多个
Log4J
SLF4J
jar,周围有许多
Log4J.properties
文件,但即使删除所有后者也不会改变日志输出。显然,
Log4J
始终忽略通过
-Dlog4j.configuration
指定的属性文件


有什么想法吗?

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

  • -Dlog4j.配置=file:///absolute/path/to/log4j.properties
显然,前缀
file:
也有效,没有完整的
URI
scheme语法
file://

这一点在一份报告的答复中也有描述