使用lo4j2警告log4j:警告找不到记录器(com.mchange.v2.log.MLog)的附加器

zi8p0yeb  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(331)

我升级到log4j2,并面临这个问题,我可以解决:

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我在Apache文档中的Log4j 1.x API Bridge部分解决了这个问题。我将以下代码添加到pom.xml中:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jcl</artifactId>
    <version>2.17.2</version>
</dependency>

然而,另一个问题出现了:

log4j:WARN No appenders could be found for logger (com.mchange.v2.log.MLog).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

这很奇怪,因为我已经把log4j-jcl加到pom.xml上了。我该怎么解决这个问题呢?
很难提供一个MWE。任何额外的信息,你需要的,请在评论中提到。
注意:请避免任何试图为log4j 1添加后门或为v1创建log4j.properties的解决方案。我遇到问题只是因为我在避免log4j v1。

mvn dependency:tree|grep log4
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.17.2:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.17.2:compile
[INFO] +- org.apache.logging.log4j:log4j-jcl:jar:2.17.2:compile

mvn dependency:tree

...
[INFO] +- org.hibernate:hibernate-c3p0:jar:5.6.7.Final:compile
[INFO] |  \- com.mchange:c3p0:jar:0.9.5.5:compile
[INFO] |     \- com.mchange:mchange-commons-java:jar:0.2.19:compile
...

log4j2.properties:

...

log4j.logger.org_apache_commons_beanutils.name = org.apache.commons.beanutils
log4j.logger.org_apache_commons_beanutils.level = FATAL

logger.org_hibernate.name = org.hibernate
logger.org_hibernate.level = FATAL

logger.org_hibernate_tool.name = org.hibernate.tool
logger.org_hibernate_tool.level = FATAL

logger.org_hibernate_mapping.name = org.hibernate.mapping
logger.org_hibernate_mapping.level = FATAL

logger.org_hibernate_hql.name = org.hibernate.hql
logger.org_hibernate_hql.level = FATAL

logger.org_hibernate_dialect.name = org.hibernate.dialect
logger.org_hibernate_dialect.level = FATAL

logger.org_hibernate_engine.name = org.hibernate.engine
logger.org_hibernate_engine.level = FATAL

logger.com_mchange.name = com.mchange
logger.com_mchange.level = FATAL

...

vmdwslir

vmdwslir1#

您遇到的问题从一开始就是相同的:您可以在类路径上拥有log4j:log4j工件或其克隆ch.qos.reload4j:reload4j
添加log4j-jcl是一种缓解措施:使用Jakarta Commons Logging的库,现在在你的应用程序中使用Log4j2。然而,使用Log4j 1.x的库直接使用上面提到的工件之一。
要解决这个问题,只需将log4jreload4j从使用它的工件中排除,并添加:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.17.2</version>
</dependency>

编辑:根据您对Eclipse特定.classpath文件的注解推测,您正在从Eclipse运行您的应用程序。Eclipse不区分普通依赖项和可选依赖项。mchange-commons-javalog4j具有可选依赖项,这就是为什么它没有出现在mvn dependency:tree列表中。但是Eclipse将其视为普通依赖项,并将其添加到运行时类路径中。

相关问题