【问题标题】:Logs are filling up with httpclient.wire.content dumps. How can I turn it off?日志充满了 httpclient.wire.content 转储。我怎样才能关闭它?
【发布时间】:2010-05-05 03:11:57
【问题描述】:

我的 catalina 日志中充斥着大量的语句,例如:

/logs/catalina.out:2010-05-05 02:57:19,611 [Thread-19] DEBUG httpclient.wire.content - >> "[0x4]
[0xc][0xd9][0xf4][0xa2]MA[0xed][0xc2][0x93][0x1b][0x15][0xfe],[0xe]h[0xb0][0x1f][0xff][0xd6][0xfb]
[0x8f]O[0xd4][0xc4]0[0xab][0x80][0xe8][0xe4][0xf2][\r]I&[0xaa][0xd2]BQ[0xdb](zq[0xcd]ac[0xa8]

永远持续下去。

我在 tomcat 和 apache 中的每个配置文件中都搜索了据称开启此功能的语句,如下所述:

http://hc.apache.org/httpclient-3.x/logging.html

而且我看不到在哪里启用了此日志记录。我部署的其他 .war 都没有这样做。应用程序中的 log4j 配置块没有这样做。

我也尝试使用以下语句将其关闭:

org.apache.commons.httpclient.wire=SEVERE

org.apache.commons.httpclient.wire.content=SEVERE

httpclient.wire.content=SEVERE

在我的 tomcat/conf/logging.properties 文件中,但这并没有阻止它

我正在为 grails 使用 S3 库,这可能是这些库的来源。但是,当我在我的开发机器上(在开发和部署配置中)运行这个应用程序时,我没有看到它。

还有一个相关的问题:我什么时候想使用这些“线路日志”?

【问题讨论】:

标签: java tomcat log4j apache-commons-httpclient


【解决方案1】:

对于 Slf4J:

<dependencies>
    <!-- LOGGING -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.5.9-RC0</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>0.9.17</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.9-RC0</version>
    </dependency>
</dependencies>

并将 logback.xml 放入你的类路径中,内容如下:

<configuration>
    <!-- LOGBACK logging config file, see http://logback.qos.ch/manual/joran.html -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!-- http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout -->
            <Pattern>%-5level %msg [%logger{16} %d{HH:mm:ss}]%n</Pattern>
        </layout>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
    <logger name="org.apache" level="WARN" />
    <logger name="org.apache.axis2" level="WARN" />
    <logger name="org.apache.axiom" level="WARN" />
    <logger name="httpclient.wire" level="WARN" />
</configuration>

【讨论】:

  • 这很好用。但是,请务必更新示例 pom.xml 中列出的程序集版本引用。例如,这是当前的最新条目: logback-classic:
【解决方案2】:

您的 Tomcat 公共/库中是否有任何其他日志记录库? (即 SLF4J、Logback、Log4J 等)

如果是,您可能还需要配置相应的日志记录配置文件。

【讨论】:

  • 谢谢!我在 config.groovy 的 log4j 部分用一行修复了它。 (虽然我不确定是哪一行做的:为了安全起见,我尝试了:'httpclient.wire.content','org.apache.commons.httpclient.wire.content' 现在我必须一次将它们退出一个看看哪个是正确的语法!
  • @user122299 你能解释一下吗?你猜对了吗?
【解决方案3】:

这是 Tomcat 8.5.1 的简​​单答案 - 目前已解决 Centos 上的问题。像许多人一样,我在这上面浪费了很多时间。 httpclient 已内置日志记录,因此您无法使用 log4j 或 slf4j- 修复它,此处提供了答案。 这适用于不包括其他日志记录系统的情况。

[http://tomcat.apache.org/tomcat-8.5-doc/logging.html][1]

创建一个 logging.properties 文件并放置在 /src/main/resources - 以便将其部署到 WEB-INF/classes (示例将默认 FINE 更改为 WARN

将 servlet-examples web 应用程序的示例 logging.properties 放置在 web 应用程序内的 WEB-INF/classes 中:

handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

org.apache.juli.FileHandler.level = WARNING
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = ${classloader.webappName}.

java.util.logging.ConsoleHandler.level = WARNING
java.util.logging.ConsoleHandler.formatter = java.util.logging.OneLineFormatter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    相关资源
    最近更新 更多