HttpClient,Log4J和Maven jar冲突

时间:2015-01-05 17:24:32

标签: java maven logging log4j apache-httpcomponents

我有一个使用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添加排除标记,但是我在HttpClient类中遇到了运行时错误(没有编译错误)。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

好吧,我的错!

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

第一个日志行用于特定的类记录器(由类名称调用的记录器),第二行(重复)用于根记录器。这是我的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">