当前位置: 首页 > 知识库问答 >
问题:

使用Logback,但Log4j开始显示警告无附加器

洪成济
2023-03-14

我使用logback为我的日志记录,它一直在工作,但是,前几天我开始得到一个警告

log4j:WARN找不到记录器(org.apache.axis.i18n.ProjectResourceBundle)的appender。log4j:警告请正确初始化log4j系统。

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

你知道为什么会出现这个警告吗?

共有2个答案

雍马鲁
2023-03-14

我花了一些时间才发现,因为消息是log4j:WARN找不到记录器的appender

我尝试排除log4j和log4j-over-slf4j。

然后我运行了mvn dependency:tree,最后发现mye commons配置实际上使用的是commons日志记录

[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>
汪理
2023-03-14

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

你应该把log4j桥放在类路径上。在这里阅读更多:http://www.slf4j.org/legacy.html

你想查看的罐子是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>
 类似资料:
  • 我有一个非常简单的scala应用程序。它所做的只是初始化记录器并logger.info(“你好”)。我在类路径中有一个log4j.properties文件,它具有以下设置 但是,当我尝试运行应用程序时。我得到的错误是log4j:WARN找不到记录器的appender(app.TestApp$)。log4j:警告请正确初始化log4j系统。 我错过了什么?但是,如果我有hadoop core,我会打

  • 我们的控制台应用程序正在使用logback进行日志记录。这是一个倒退。类路径中的xml文件。 在大多数平台(Linux、Windows、jdk7或jdk8)上,日志记录按预期工作(通过日志返回)。 然而,在使用jdk 6的Mac上,当运行应用程序时,我们有时会看到: 似乎出于某种原因,选择log4j而不是logback进行日志记录。在我们的生活中。班这里我们通过slf4j登录: 这是完整的类路径:

  • 我得到这个错误 这是我的主要任务 这是我的log.properties档案 这是我的文件结构。 我正处于Log4J的学习阶段,并试图实施一个虚拟项目来深入理解它。

  • 问题内容: 我正在尝试学习log4j,所以我只是尝试做一些非常简单的事情。 但是做完之后我得到了; 你知道我错了吗? 谢谢你们 问题答案: 您在类路径中缺少或。 您可以使用 但是请注意,这只会登录到System.out,因此不建议这样做。您实际上应该使用上面的文件之一,然后将其写入日志文件。 一个非常简单的例子是

  • 我尝试使用第二个日志文件与我的默认日志文件在servlet我有这个log4j.xml配置。 现在在servlet中,我将记录器设置为: 但在运行时:错误日志。调试(“启动应用程序”);我得到: log4j和log4j.xml在类路径我做错了什么?

  • 我真的不明白那条警告信息是什么意思。谁能解释一下我该怎么处理?