显式设置apache HttpClient日志级别

时间:2015-03-31 12:30:28

标签: java logging log4j slf4j apache-httpclient-4.x

我正在开发一个Web应用程序,其中使用apache HttpClient来制作一些httpRequest。
对于日志记录,我使用slf4j和slf4j-log4j12'插入'

我想要的是我的应用程序的DEBUG日志级别,但HttpClient的WARN级别。我正在log4j.properties中发送日志记录属性。

log4j.rootLogger=DEBUG,console,file

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout   
log4j.appender.console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.file=org.apache.log4j.RollingFileAppender   
log4j.appender.file.File=log.log   
log4j.appender.file.threshold=DEBUG

初始化和日志记录就像那样

import org.slf4j.LoggerFactory;
private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(<MY_CLASS>.class.getName());

LOG.debug("This is debug info");
LOG.warn("This is warn info");

到目前为止,我将以下内容设置为使用HttpClient的类

System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

为了“停用”&#39;日志记录,但这会完全停止日志记录,并且不会根据需要将级别设置为WARN。

到目前为止,我已经尝试了以下SO问题的建议,但没有运气。我也看到过很多其他的建议几乎相同。

在执行时传递参数,例如java -Dlog4j,对我来说不是解决方案。

作为旁注,我的项目有两个模块,

  • 父母模块&#39;定义日志记录属性并具有slf4j(1.7.5)和slf4j-log4j12依赖项
  • 子模块是我使用HttpClient(4.3.4)的地方,它只有 slf4j(1.7.5)依赖

1 个答案:

答案 0 :(得分:2)

尝试将这三行添加到log4j.properties文件中:

log4j.logger.org.apache.http=WARN
log4j.logger.org.apache.http.headers=WARN
log4j.logger.org.apache.http.wire=WARN