2013-01-22 106 views
0

我想用log4j把日志记录在httpclient中。 这样做,我添加了一个文件commons-logging.properties与内容org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger。 然后,我添加一个文件log4j.properties与由HttpClient的文档设置为记录例如以下内容:把log4j日志记录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 

然而,当我跑我的PROGRAMM与HttpClient的我没有看到任何日志输出执行HTTP请求。后一个参数应该使log4j的输出在这个意义上是冗长的,它显示了几个例如使用的属性文件。这完全不显示。 我尝试作为WEL是与

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

,这将引发一个空指针异常programmaciatally读出记录器。

此外,我读

LogManager.getCurrentLoggers().hasMoreElements() 

这始终是假的。

好像log4j不是“激活”的httpclient。任何人都可以帮助我在这里,我可以做什么,以打开登录?

(是的,我已经在这里计算器阅读相关主题)

非常感谢您

菲利克斯

回答

0

有某种奇怪的冲突涉及公共日志界面和CW如何在Android上使用httpclient时,主动/取消WIRE和HEADER记录器...

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

FWIW如果你正在做大量的低水平的使用中的REST接口的Android和u只是想快速的方法来切换记录,我有运气his project,我只是用一个罐子里的2个版本,这取决于关于我是否需要伐木。在本地,apache核心或客户端上的每一个新版本,你都可以运行他的脚本来转换apache原生的android使用。它有点在杂草中,但它会起作用。