HttpClient、Log4J 和 Maven jar 冲突
HttpClient, Log4J and Maven jar conflicts
我有一个使用 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 中放置一个 exclusion 标记用于 commons-loggin,但是我在 HttpClient class 中遇到运行时错误(没有编译错误).
我能做什么?
好吧,我的错!
似乎特定的 class 记录器与根记录器堆叠在一起。
第一行用于特定的 class 记录器(由 class 名称调用的记录器),第二行(重复)用于根记录器。这是我的 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">
我有一个使用 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 中放置一个 exclusion 标记用于 commons-loggin,但是我在 HttpClient class 中遇到运行时错误(没有编译错误).
我能做什么?
好吧,我的错!
似乎特定的 class 记录器与根记录器堆叠在一起。
第一行用于特定的 class 记录器(由 class 名称调用的记录器),第二行(重复)用于根记录器。这是我的 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">