【问题标题】:Reduce the logging noise from org.apache.http.client when using log4j2使用 log4j2 时减少来自 org.apache.http.client 的日志记录噪音
【发布时间】:2017-09-16 15:14:49
【问题描述】:

我正在启动一个新的 Java 应用程序并准备使用 log4j2(我是 log4j2 的新手) 我的应用程序记录正确,但我想摆脱从 org.apache.http 收到的所有警告

根据https://hc.apache.org/httpcomponents-client-ga/logging.html,我应该能够通过 log4j 进行控制(尽管他们只给出了 log4j 而不是 log4j2 的示例)。

我的日志文件有类似的条目

2017 年 9 月 16 日上午 9:01:32 org.apache.http.client.protocol.ResponseProcessCookies processCookies 警告:无效的 cookie 标头:“Set-Cookie: visid_incap_661002=+HabQKJHRbKzy; expires=2018 年 9 月 16 日星期日 11:41:58 GMT;路径=/;域=.mydomain.com”。 无效的“过期”属性:2018 年 9 月 16 日星期日 11:41:58 GMT

我正在尝试禁止来自 org.apache.http.client 的所有警告 有些文章对客户说实际上是在使用 org.apache.http.wire ,但我尝试过的任何东西似乎都不起作用

这是我的 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
    <Appenders>
        <RollingFile name="fileLogger" fileName="${basePath}/app-info.log" filePattern="${basePath}/app-info-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
        </RollingFile>

        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout   pattern="[%L][%-5level] %d{yyyy-MM-dd HH:mm:ss} [%t] %c{1} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>

        <logger name="org.apache.http.client" level="ERROR" />
        <logger name="org.apache.http.wire" level="ERROR" />
        <logger name="org.apache.commons.httpclient" level="ERROR" />
        <logger name="ntapp" level="debug" additivity="true">
           <appender-ref ref="fileLogger" level="INFO" />
        </logger>
        <Root level="INFO" additivity="false">
            <appender-ref ref="console" />
        </Root>

    </Loggers>
</Configuration>

感谢您的帮助

【问题讨论】:

  • 您提供的日志与配置文件中的任一模式都不匹配。你能给出正确的日志吗?或者,正确的配置文件?
  • 你好 sazzad,我忘记在示例中添加的一件事是我的应用程序(ntapp,我已将其添加到示例中)。这个 log4j2.xml 在类路径中,我知道应用程序正在正确使用它,因为我在控制台中得到了什么。当我运行应用程序时,我也会进入控制台,消息如来自 http 的描述中所示,这就是我想要摆脱的谢谢
  • 好吧,IF 你提供的日志正是你得到的,那么它不是通过 log4j2 完成的(因为模式不匹配)。因此,我认为您无法通过 log4j2 压制。

标签: java log4j2 apache-commons apache-commons-httpclient apache-commons-logging


【解决方案1】:

所以这篇文章似乎是解决我的问题的正确方法,而且确实如此。

Stackoverflow article - Solution to my issue

仍然想了解为什么我不能通过记录器来做到这一点(从 http 客户端的文档看来我应该能够做到)

【讨论】:

    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2021-11-19
    • 2016-01-26
    相关资源
    最近更新 更多