首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >禁用HttpClient日志记录

禁用HttpClient日志记录
EN

Stack Overflow用户
提问于 2011-02-07 03:02:33
回答 33查看 115.1K关注 0票数 152

我在一个集成测试套件中使用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中不可用。我需要做什么特殊的事情才能读入这个日志配置?

EN

回答 33

Stack Overflow用户

发布于 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"));
票数 94
EN

Stack Overflow用户

发布于 2011-02-07 07:54:14

注意:这个答案中的一些可能会重复您已经知道(或认为您已经知道)的事情,但是这个问题上有一些错误的信息,所以我将从头开始详细说明

  • Commons HttpClient将Commons-Logging用于其所有的日志needs.
  • Commons-Logging不是一个完整的日志框架,而是一个围绕几个现有日志记录的包装器frameworks
  • That意味着当你想要控制日志输出时,你(大部分)最终会配置一个不同于Commons-Logging的库,但是因为Commons-Logging围绕着其他几个库,所以在不知道你的setup.
  • Commons-Logging可以登录到log4j的情况下,我们很难猜测配置哪个库。但它也可以登录到JDK (JDK 1.4jre)(JDK 1.4jre尝试聪明地猜测你已经在使用哪个日志框架,并将它的日志发送到那个框架。JDK logging)
  • Commons-Logging )如果你还没有一个日志框架,并且运行在1.4或更高版本的(java.util.logging)
  • Relying上(你确实应该有),那么它可能会把它的日志消息发送到java.util.logging on
  • -日志的自动发现机制很容易出错。简单地将httpclient添加到类路径会导致它切换它使用的日志记录机制,这可能不是你想显式地告诉want
  • It哪个日志记录库到use
  • You可以通过按照你想要配置commons的these instructions
  • The步骤创建一个log4j.jar文件来做到这一点-httpclient logging are
    1. 决定你想要使用哪个底层日志框架。有许多选择,但log4jjava.util.logging可能是最好的选择。
    2. 设置commons-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).
    3. Configure上使用-D (例如,log4j)以忽略您不想要的消息,并输出您执行want.

的消息

这是很多步骤,但这就是它所需要的。Apache-commons的开发人员倾向于假设您已经配置了日志记录框架,并且他们可以通过自动发现来确定是哪一个。

如果这对你来说不是真的,那么让它运行起来往往需要更多的工作。

票数 33
EN

Stack Overflow用户

发布于 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>
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4915414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档