【问题标题】:HttpClient, Log4J and Maven jar conflictsHttpClient、Log4J 和 Maven jar 冲突
【发布时间】:2015-01-05 17:24:32
【问题描述】:

我有一个使用 org.apache.httpcomponents 的 Maven POM 文件,其中包含 commons-logging(我不需要包含此依赖项)

但是我需要使用 Log4J,并且在同一个项目中包含 commons-logging JAR 和 Log4J JARS 会导致冲突。

此冲突导致我的日志文件中出现重复行。

我的 POM(摘录):

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.0-beta5</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.0-beta5</version>
</dependency>

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.0.1</version>
</dependency>

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.6</version>
</dependency>       

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient-cache</artifactId>
    <version>4.2.3</version>
</dependency>       

我尝试在 org.apache.httpcomponents 中为 commons-loggin 放置 exclusion 标签,但在 HttpClient 类中出现运行时错误(没有编译错误)。

我能做什么?

【问题讨论】:

  • 日志文件中烦人的重复行!我不知道怎么做,但是调用 logger.debug("foo") 会在日志文件中写入两个“foo”行。
  • 这仅列出依赖项,而不是它们的配置或用法。您需要展示记录器配置以及如何使用它们以获得准确的答案。
  • 我确定这种行为是因为我有 2 个记录器(Log4J 和 commons-loggin),因为这发生在之前并且我能够删除 commons-logging。现在我无法删除 commons-logging,因为它是 httpClient 的依赖项(我没有自己添加 commons-logging)。顺便说一句,如果我删除 httpClient 和所有依赖项(包括 commons-logging),日志只显示一行,正确的行为)。
  • @Ryan J 毕竟你很聪明。对不起我上面的确定。我会支持你的评论。

标签: java maven logging log4j apache-httpcomponents


【解决方案1】:

好吧,我的错!

似乎特定的类记录器与根记录器堆叠在一起。

第一行用于特定的类记录器(由类名调用的记录器),第二行(重复)用于根记录器。这是我的 log4j XML 配置:

<loggers>
    <Logger name="cmabreu.sagitarii.teapot.Main" level="debug"> 
        <appender-ref ref="File"/> 
    </Logger>

    <root level="error">
        <appender-ref ref="File" />
    </root>
</loggers>

我需要为特定记录器(cmabreu.sagitarii.teapot.Main)添加additivity="false",这样它就不会与根记录器堆叠。

<Logger name="cmabreu.sagitarii.teapot.Main" level="debug" additivity="false">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多