【问题标题】:put log4j logging httpclient把 log4j 记录 httpclient
【发布时间】:2013-01-22 13:11:19
【问题描述】:

我想用 log4j 登录 httpclient。 为此,我添加了一个文件 commons-logging.properties,其内容为 org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger。 然后我添加了一个文件 log4j.properties,其中包含 httpclient 文档提供的以下内容作为日志记录示例:

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n

log4j.logger.org.apache.http=DEBUG
log4j.logger.org.apache.http.wire=ERROR

这两个文件都位于类路径中。我放了以下参数

-Dlog4j.configuration=log4j.properties
-Dlog4j.debug

但是,当我运行使用 httpclient 执行 http 请求的程序时,我看不到任何日志记录输出。从这个意义上说,后一个参数应该使 log4j 的输出变得冗长,它显示了几件事,例如使用的属性文件。这根本不显示。 我也尝试过以编程方式读出记录器

Logger.getLogger("log4j.logger.org.apache.http.wire").getLevel().toString()

这会引发空指针异常。

另外我读了

LogManager.getCurrentLoggers().hasMoreElements()

这总是错误的。

似乎 log4j 没有为 httpclient“激活”。任何人都可以在这里帮助我,我可以做些什么来打开登录?

(是的,我已经在 stackoverflow 阅读了相关主题)

非常感谢

菲利克斯

【问题讨论】:

    标签: logging log4j httpclient


    【解决方案1】:

    在 android 上使用 httpclient 时,关于如何激活/停用 WIRE 和 HEADER 记录器的公共日志接口和 CW 存在某种奇怪的冲突...

    仅关于一个选择重载/重新实现 android 记录器的项目,为 android 上的 WIRE 和 HEADER 记录器提供挂钩,请查看 here

    FWIW 如果您在 REST 接口的 android 中进行大量低级使用,并且您只想快速切换日志记录,我很幸运 his project 并且我只使用 2 个版本的 jar,这取决于我是否需要记录。本机、apache 核心或客户端上的每个新版本,您都可以运行他的脚本来将 apache 本机转换为 android 使用。它有点杂草丛生,但它会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 2017-09-25
      • 2018-07-10
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多