把log4j记录下来的httpclient

时间:2013-01-22 13:11:19

标签: logging log4j httpclient

我想用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()

这总是错误的。

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

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

非常感谢

菲利克斯

1 个答案:

答案 0 :(得分:0)

有一些奇怪的冲突涉及公共日志界面和CW如何在Android上使用httpclient时激活/取消激活WIRE和HEADER记录器......

只涉及一个选择重载/重新实现android记录器的项目,为android上的WIRE和HEADER记录器提供一个钩子,检查here

FWIW如果你在REST接口的android中做了很多低级别的使用,你只想快速切换日志,我很幸运his project我只是使用2个版本的jar,取决于我是否需要伐木。每个新的本机,apache核心或客户端版本,你可以运行他的脚本来转换apache native for android使用。它在杂草中有点下降但它会起作用。