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

Log4J仍然与Log4j2一起运行

曹兴贤
2023-03-14

我有一个spring启动的项目,在这个项目中,我正在从Log4j过渡到log4j2。我遵循了这里文档中的步骤。具体地说,我修改了log4j.xml,使之与log4j2标准一致,并将其重命名为log4j2.xml,我使用log4j2.xml中的 设置启用了对log4j2的调试,以便可以看到log4j2的启动。启动我的spring boot应用程序时,我使用以下系统设置:

-dlog4j.configurationfile=log4j2.xml-dorg.jboss.logging.provider=log4j2

我可以在调试输出中看到我的log4j2.xml启动附加符等,然后最后一条log4j2消息指出:

日志提供程序:org.jboss.loggin.log4J2LoggerProvider通过系统属性找到

我正在使用以下罐子:

编译组:“org.slf4j”,名称:“slf4j-log4j12”,版本:“1.7.12”

编译组:“org.apache.logging.log4j”,名称:“log4j-api”,版本:“2.4.1”

编译组:“org.springframework.boot”,名称:“spring-boot-starter-log4j2”,版本:“1.4.0.release”

但是,我仍然收到来自log4j的消息:

log4j:WARN找不到记录器的附加程序log4j:WARN请正确初始化log4j系统log4j WARN有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig

所以我的潜在问题是如何关闭log4j而只使用log4j2?我是否会从log4j2收到一条消息,它会显式地告诉我什么时候正确地配置了它?在使用log4j2时,有没有我遗漏的特殊配置?

共有1个答案

柴嘉禧
2023-03-14

您必须只对log4j2使用这些依赖项。

<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>${log4j.slf4j.impl.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>${log4j2.version}</version>
            <scope>runtime</scope>
        </dependency>

此外,您还需要将spring-boot-starter-logging从spring-boot中排除。像这样

 类似资料:
  • 看起来Google Calendar API的当前版本是v3,我相信它在过去支持用于JavaScript/Browser实现的OAuth和简单API密钥。 截至2017年2月2日:是否仍然可以使用带有API Key的Google日历API,或者需要通过OAuth2.0访问API(甚至访问公共日历)? 根据Google日历API,“您的应用程序必须使用OAuth 2.0来授权请求”(https://

  • 问题内容: 我习惯在普通的log4j上使用。现在,我切换到,无法使附加程序正常工作。 下面的附加程序可以正常工作。但是永远不会创建的日志文件。为什么? 问题答案: 该标记缺少属性。

  • 问题内容: 因此,我尝试按照其网站上的此(非Maven实现)和要求将slf4j添加到log4j。并尝试使用此代码 并将以下内容添加到我的库中 log4j-api-2.3.jar log4j-core-2.3.jar log4j-sl4j-impl-2.3.jar log4j-to-sl4j-2.3.jar slf4j-api-1.7.12.jar 当我尝试运行它时,出现以下错误 知道我要去哪里错了

  • 问题内容: 我正在尝试在Hibernate 4.3.5 / JPA2对象中使用orphanRemoval,但它似乎没有按我预期的那样工作。但是,我不确定我做错了什么,还是Hibernate中的错误。 鉴于以下关系(为简便起见,省略了@ Version,getter和setter): 我希望,如果我从Provider.contracts列表中删除合同,那么它将从合同表中删除相应的行,并从附件表中删除

  • 在我运行mongo恢复后,mongo服务无法自动启动,但如果我打开终端并运行monstar,服务运行完美。如果我关闭终端,我得到。有什么建议吗? 错误:无法连接到服务器127.0.0.1 shell/mongo。js:79 当我运行mon神时,我得到: MongoDB启动:pid=1875 port=27017 dbpath=/data/db/64位周四25 12:16:40db version

  • 问题内容: 我正在尝试在Hibernate 4.3.5 / JPA2对象中使用orphanRemoval,但它似乎没有按我预期的那样工作。但是,我不确定我做错了什么,还是Hibernate中的错误。 给定以下关系(为简洁起见,省略了@ Version,getter和setter): 我希望如果从Provider.contracts列表中删除合同,那么它将从合同表中删除相应的行,并从附件表中删除所有