0

我想用 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 阅读了相关主题)

非常感谢

菲利克斯

4

1 回答 1

0

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

仅涉及一个选择重载/重新实现 android 记录器的项目,为 android 上的 WIRE 和 HEADER 记录器提供挂钩,请在此处查看

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

于 2013-01-27T18:24:46.557 回答