繁体   English   中英

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

[英]Configuring log4j2 and log4j using a single log4j2 xml file

我已将我的应用程序迁移到 log4j 2,并通过 log4j2.xml 对其进行了配置

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

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

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

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

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

我担心的是我的日志配置文件和输出的碎片。 我还担心 log4j.xml 和 log4j2.xml 之间可能存在的冲突。 例如,日志文件 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 桥。

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

你的类路径应该包括:

  • log4j-api-2.6.1.jar
  • log4j-core-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

在使用 log4j2 的 maven 项目中,可以从使用它的模块中排除 log4j,在 pom 中,以便启用 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 常见问题中的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM