【问题标题】:Using Logback but Log4j started displaying WARN no Appenders使用 Logback 但 Log4j 开始显示 WARN no Appenders
【发布时间】:2012-12-28 19:54:59
【问题描述】:

我正在使用 logback 进行日志记录,但是它一直在工作;前几天我开始收到警告

log4j:WARN 找不到记录器 (org.apache.axis.i18n.ProjectResourceBundle) 的附加程序。 log4j:WARN 请正确初始化log4j系统。

我没有使用 log4j,也没有使用过这个项目。 我的资源文件夹中有一个 logback.xml。

关于为什么此警告开始出现的任何想法?

【问题讨论】:

  • Axis 使用 log4J:org.apache.axis.i18n.ProjectResourceBundle。您是否将您的 logback 文件更改为不同的日志记录级别? (跟踪与调试)
  • 什么是轴?是的,我确实将它从 TRACE 更改为 DEBUG
  • 我相信我发现了 Axis 的使用位置。我正在使用一个库:org.swift.common:jira-soap:4.4.0 它使用axis:1.4

标签: java logging log4j slf4j logback


【解决方案1】:

您必须使用确实使用 log4j 的库。你能发布更多关于你的项目的信息吗?

您可能应该只将 log4j 桥放在类路径上。在这里阅读更多: http://www.slf4j.org/legacy.html

您要查看的 jar 是 log4j-over-slf4j。它将桥接 log4j API 以实际调用您的 slf4j API 实现(在您的情况下 - logback)。

如果您使用 Maven 来构建您的项目,那么它可能就像放置一样简单

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <version>1.7.7</version>
</dependency>

在依赖项中。

排除库(如果需要)将以这种方式完成(假设我们正在讨论您提到的 jar 的传递依赖):

    <dependency>
        <groupId>org.swift.common</groupId>
        <artifactId>jira-soap</artifactId>
        <version>4.4.0</version>
        <exclusions>
            <exclusion>
                <groupId>...</groupId>
                <artifactId>...</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

【讨论】:

  • 查看上面关于使用轴的 jira 库的评论
  • ... 并且不包括作为其他任何东西的传递依赖关系拉入的任何 log4j jar。
  • @Ian - 没错。克里斯 - 如果您不熟悉 Maven,请查看文档的依赖项管理部分:maven.apache.org/guides/introduction/…(仅当您确实为此使用 Maven 时才相关 :))
  • @IanRoberts 排除了 maven 自动导入的 log4j 依赖项解决了这个问题。但是,我不必在 pom.xml 文件中添加 标记,而是将 Intillj 的项目设置用于包含的库并将其从该列表中删除。
  • 我仍然假设您正在使用 Maven :) 我确实看到您提到的工件使用 commons-logging - 如果您需要排除这种依赖关系,您会像我一样这样做'在编辑答案的最后一部分中提到过。 org.swift.commonjira-soap4.4.0commons-loggingcommons-logging
【解决方案2】:

由于消息是 log4j:WARN No appenders could be found for logger,我花了一些时间才知道

我尝试排除 log4j 并尝试了 log4j-over-slf4j。

然后我运行 mvn dependency:tree 最后发现 mye commons-configuration 实际上是在使用 commons-logging

[INFO] +- commons-configuration:commons-configuration:jar:1.9:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.0.13:compile
[INFO] |  +- ch.qos.logback:logback-core:jar:1.0.13:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.5:compile
[INFO] +- org.slf4j:log4j-over-slf4j:jar:1.7.6:compile
[INFO] \- org.apache.commons:commons-lang3:jar:3.1:compile

这成了我的解决方案。

    <!-- logging with logback (and slf4j)-->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.0.13</version>
    </dependency>

    <!-- had a dep in commons-configuration -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.6</version>
    </dependency>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
相关资源
最近更新 更多