使用单个log4j2 xml文件配置log4j2和log4j

时间:2014-03-11 09:12:53

标签: java logging log4j log4j2

我已将我的应用程序迁移到log4j 2,并且已通过log4j2.xml配置它

但是,我正在使用的一些库依赖于log4j 1.如果我使用以下命令运行应用程序:

-Dlog4j.configurationFile=path/to/log4j2.xml

log4j 1抱怨找不到配置文件。我正在使用log4j 2,log4j-1.2-api-2.0-rc1.jar提供的log4j 1.x桥。是否可以使用单个log4j2.xml进行配置?

我尝试过的另一种方法是同时配置log4j和log4j2:

-Dlog4j.configurationFile=path/to/log4j2.xml -Dlog4j.configuration=path/to/log4j.xml

我担心的是我的日志记录配置文件和输出的碎片。我也担心log4j.xml和log4j2.xml之间可能存在冲突。例如logfile error.log配置为使用log4j 1中的FileAppender和log4j 2中的RollingFileAppender。

有什么建议吗?

[注]

这是我看到的错误:

log4j:WARN No appenders could be found for logger (org.apache.activemq.util.ThreadPoolUtils).
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 2的版本是log4j 2.0 rc1。

[答案]

似乎activemq-5.8.0.jar与log4j 1捆绑在一起。解决方案只是在activemq之前加载log4j 1.x网桥。

2 个答案:

答案 0 :(得分:35)

我建议使用log4j2发行版中包含的log4j-1.2适配器。这样,任何编码到log4j-1.2 API的库都可以与log4j2一起使用而无需更改任何代码。

您的类路径应包括:

  • 的log4j-API-2.6.1.jar
  • log4j的核 - 2.6.1.jar
  • log4j-1.2-api-2.6.1.jar
  • log4j2.xml

您的课程路径应包括:

  • 的log4j-1.2.x.jar
  • log4j.properties或log4j.xml(无论如何都会被log4j2忽略)

另见http://logging.apache.org/log4j/2.x/faq.html#which_jars

答案 1 :(得分:2)

在使用log4j2的maven项目中,可以在pom中从使用它的模块中排除log4j,以便使log4j2能够接管:

<dependencies>
    <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.4</version>
        <!--force usage of log4j2-->
        <exclusions>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-web</artifactId>
        <version>2.3</version>
    </dependency>
</dependencies>

log4j FAQ

中有关该信息的更多信息