【发布时间】:2017-05-23 18:54:28
【问题描述】:
我正在使用 log4j2,但我的一些依赖项使用 log4j。当我从可执行的 jar 文件运行应用程序时,我只得到几行日志和以下消息:
log4j:WARN No appenders could be found for logger (org.reflections.Reflections).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
但是当我在 IntelliJ 中运行应用程序时,它会按预期工作,没有警告并且生成所有日志。
我已经使用 maven enforcer 来禁止 log4j。我还尝试添加依赖项,但将范围设置为“提供”。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>[0.0,1.2.17)</version>
<scope>provided</scope>
</dependency>
我也使用单个版本号而不是范围来完成上述操作。所有这些都适用于在 IntelliJ 中运行时,但当应用程序作为可执行 jar 运行时,它们都不起作用。
How do you configure logging in Hibernate 4 to use SLF4J 问题的答案表明我收到此错误消息,因为 log4j 不知何故爬进了我的 jar,我似乎无法阻止它。
任何有关如何解决此问题的建议将不胜感激。谢谢。
请注意,我使用的是 log4j2 和以下依赖项
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.8.2</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.8.2</version>
</dependency>
【问题讨论】:
-
不,这不是重复的。根据文档,我有所有必需的配置文件,包括 log4j.properties 或 .xml 文件是特别要避免的。我已经有一个正确配置的 log4j2.xml 文件。