【问题标题】:Set apache HttpClient log level explicitly显式设置 apache HttpClient 日志级别
【发布时间】: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 问题的建议,但没有运气。我还看到许多其他的建议几乎相同。

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 2012-05-04
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2017-08-23
      • 2016-11-27
      • 2023-03-23
      相关资源
      最近更新 更多