【发布时间】:2015-06-04 19:08:51
【问题描述】:
我正在开发一个 Web 应用程序,其中使用 apache HttpClient 进行一些 httpRequest。
对于日志记录,我使用 slf4j 和 slf4j-log4j12 'plug in'
我想要的是为我的应用程序设置 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");
为了“停用”日志记录,但这会完全停止日志记录,并且不会按照我的意愿将级别设置为 WARN。
到目前为止,我已经尝试了以下 SO 问题的建议,但没有运气。我还看到许多其他的建议几乎相同。
- Disable HttpClient logging
- Logs are filling up with httpclient.wire.content dumps. How can I turn it off?
在执行时传递参数,例如java -Dlog4j 对我来说不是解决方案。
作为旁注,我的项目有两个模块,
- “父模块”定义了日志记录属性并具有 slf4j (1.7.5) 和 slf4j-log4j12 依赖项
- 子模块是我使用 HttpClient (4.3.4) 的地方,它只有
slf4j (1.7.5) 依赖
【问题讨论】:
标签: java logging log4j slf4j apache-httpclient-4.x