我在一个集成测试套件中使用commons-httpclient3.1。HttpClient的默认日志记录非常嘈杂,我似乎无法将其关闭。我试着按照here的说明去做,但是它们都没有起到任何作用。
大多数情况下,我只需要让org.apache.http.wire记录器关闭即可。部分问题是我不知道HttpClient正在尝试使用哪种类型的记录器,而最大的问题是我以前从未使用过这个库。我尝试创建一个log4j.properties文件并将其放在我的测试/资源文件夹中,修改jre/lib中的主logging.properties文件,并按照logging page上的指定将各种日志记录选项发送到Maven.
任何帮助都是appreciated...this快把我逼疯了。
更新:jwebunit更正:看起来这个输出实际上是由使用HttpClient产生的,而不是我自己的。无论哪种方式,这都是不可取的。
更新:感谢你到目前为止的尝试。我已经尝试了下面建议的所有方法,但仍然没有成功。我在src/test/resources文件夹中有一个commons-logging.properties文件,其中包含以下内容
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
log4j.configuration=log4j.properties
和同一文件夹中包含以下内容的文件log4j.properties
log4j.rootLogger=ERROR, 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
#This is the line that should make httpclient shut up
log4j.logger.org.apache.http=ERROR
然而,当我运行我的测试时,我仍然得到一堆如下所示的输出:
21:57:41.413 [main] DEBUG org.apache.http.wire - << " [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << " [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << " </ul>[\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << " [\n]"
21:57:41.424 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << " </div>[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << " </li>[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << " [\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << " [\r][\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << " </ul>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "<div class="details">[\n]"
21:57:41.442 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "<div class="details-body details-precis ">[\n]
"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "<div class="details-state">[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
Destroying 1 processes21:57:41.465 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
在我弄清楚如何关闭这个库之前,这个输出会让这个库在me...that中不可用。我需要做什么特殊的事情才能读入这个日志配置?
发布于 2011-05-23 23:54:55
更新log4j.properties
以包括:
log4j.logger.httpclient.wire.header=WARN
log4j.logger.httpclient.wire.content=WARN
请注意,如果没有安装Log4j库,HttpClient (以及JWebUnit)将使用logback。在这种情况下,请创建或编辑logback.xml
以包括:
<configuration>
<logger name="org.apache" level="WARN" />
<logger name="httpclient" level="WARN" />
</configuration>
在log4j.properties
中使用包名称org.apache.commons.httpclient
将日志级别设置为WARN
with 将无法按预期在中运行:
log4j.logger.org.apache.commons.httpclient=WARN
这是因为HttpClient (v3.1)的源使用以下日志名称:
public static Wire HEADER_WIRE = new Wire(LogFactory.getLog("httpclient.wire.header"));
public static Wire CONTENT_WIRE = new Wire(LogFactory.getLog("httpclient.wire.content"));
发布于 2011-02-07 07:54:14
注意:这个答案中的一些可能会重复您已经知道(或认为您已经知道)的事情,但是这个问题上有一些错误的信息,所以我将从头开始详细说明
java.util.logging
)java.util.logging
on log4j.jar
文件来做到这一点-httpclient logging are log4j
或java.util.logging
可能是最好的选择。Log
实现。例如,要使用log4j,请将以下内容放入属性文件:org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
,或使用JDK logging set org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
。还可以将这些设置为系统属性(例如,在底层日志记录实现的命令line).-D
(例如,log4j)以忽略您不想要的消息,并输出您执行want.的消息
这是很多步骤,但这就是它所需要的。Apache-commons的开发人员倾向于假设您已经配置了日志记录框架,并且他们可以通过自动发现来确定是哪一个。
如果这对你来说不是真的,那么让它运行起来往往需要更多的工作。
发布于 2014-02-21 06:53:46
对于log4j,将以下内容添加到log4j.properties
(在应用程序的source
目录中):
log4j.logger.org.apache=WARN
log4j.logger.httpclient=WARN
对于logback,以下logback.xml
将消除噪声:
<configuration>
<logger name="org.apache" level="WARN" />
<logger name="httpclient" level="WARN" />
</configuration>
https://stackoverflow.com/questions/4915414
复制相似问题