【问题标题】:How to use log4j2 to log log4j logs如何使用 log4j2 记录 log4j 日志
【发布时间】:2016-01-26 11:23:35
【问题描述】:

我在我的应用程序中配置了 log4j2,但我的一些第三方依赖项使用 log4j (1.2)。有没有办法使用 log4j2.xml 来记录来自 log4j 的日志?

还是我必须维护两个配置文件,一个用于 log4j2,一个用于 log4j。

这是我使用的 log4j2 配置;

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Properties>
    <Property name="logFiles">./logs</Property>
  </Properties>
  <Appenders>
    <Console name="sysOut" target="SYSTEM_OUT">
      <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
    </Console>
   <Loggers>
        <logger name="org.sample.core" level="debug">
            <AppenderRef ref="sysOut"/>
        </logger>       

        <Logger name="org.apache.log4j.xml" level="debug">      
            <AppenderRef ref="sysOut"/>
        </Logger>
        <Root level="warn">
            <AppenderRef ref="sysOut"/>
        </Root>
  </Loggers>
</Configuration>

【问题讨论】:

    标签: java logging log4j2


    【解决方案1】:

    最简单的方法是使用 log4j2 中包含的 log4j-1.2 桥接 jar。 请参阅Log4j 1.2 Migration Guide。 (确保从您的类路径中删除旧的 log4j-1.2.x.jar!)

    您只需要 Log4j 2 配置。

    【讨论】:

      【解决方案2】:

      首先排除其他第三方依赖中的每一个log4j12依赖:

      <exclusions>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
      </exclusions>
      

      然后添加 log4j-over-slf4j 依赖项,通常需要 log4j 的任何东西都将使用 log4j-over-slf4j 代替。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-19
        • 1970-01-01
        • 2015-12-26
        • 1970-01-01
        • 2019-03-14
        相关资源
        最近更新 更多