【问题标题】:Can't turn off HttpClient Wire debug log messages无法关闭 HttpClient Wire 调试日志消息
【发布时间】:2018-06-19 20:29:21
【问题描述】:

我一直在尝试将 Wire 设置为不发送 DEBUG 到控制台,但无论我做什么,它都不会听。

我已正确初始化 log4j:我没有收到任何附加消息,log4j 遵守我的班级和控制台级别。

在 log4j.properties 中,我有各种可预见的方式来写线:

    log4j.logger.org.httpclient=ERROR
    log4j.logger.org.apache=ERROR
    log4j.logger.org.apache.http=ERROR
    log4j.logger.org.apache.http.wire=ERROR
    log4j.logger.org.apache.http.wire.headers=ERROR
    log4j.logger.httpclient.wire=ERROR
    log4j.logger.httpclient.headers=ERROR
    log4j.logger.httpclient.content=ERROR
    log4j.logger.org.apache.hc.client5.http.wire=ERROR
    log4j.logger.httpclient=ERROR
    wire=ERROR
    http=ERROR

然后我想为什么不在调用它之后打印所有记录器? 所以我就这么做了。我得到了上面提到的所有内容的很好的打印输出,以及我目前的课程。遍历LogManager.getCurrentLoggers()

不会打印任何其他内容

我想我已经阅读了 Google 上的所有结果。任何指导将不胜感激。

关于项目:项目是一个 maven 项目 - pom.xml 包含资源文件夹。为了完成这项工作,我确实创建了一个 ControlLogging 类,并首先调用 PropertyConfiguratior.configure("log4j.properties")。我将此函数称为@Before 测试运行,并且在进行 API 调用的静态类中。在任何时候进行打印都不会显示 Wire 记录器。

【问题讨论】:

    标签: java logging log4j apache-httpclient-4.x


    【解决方案1】:

    嗯,我能够使用 deps 使我的 log4j 属性工作:

    implementation group: 'org.slf4j', name: 'slf4j-log4j12', version: 1.7.25
    implementation group: 'org.slf4j', name: 'slf4j-api', version: 1.7.25
    implementation group: 'org.slf4j', name: 'jcl-over-slf4j', version: 1.7.25
    

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.25</version>
    </dependency>
    

    还有src/java/(main|test)/resources/log4j.properties:

    log4j.rootLogger=DEBUG, 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=ERROR
    log4j.logger.org.apache.http.wire=ERROR
    

    【讨论】:

      【解决方案2】:

      所以最终对我的项目起作用的是为sl4j/logback 创建一个配置——我无法让它为 log4j 等工作。

      所以在main/java/resources/logback.xml

      <xml version="1.0" encoding="UTF-8" ?>
           <configuration>
           <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
           <encoder>
                <pattern>%d{HH:mm:ss} %thread %-5level %logger{36} %msg%n</pattern>
           </encoder>
           </appender>
      
           <logger name="org.apache" level="ERROR"/>
           <logger name="httpclient" level="ERROR"/>
      
           <root level="DEBUG">
                <appender-ref ref="STDOUT" />
           </root>
      </configuration>
      

      在 maven 中,我只是简单地包含了 slf4j 的依赖项

       <dependency>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-api</artifactId>
       </dependency>
       <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
       </dependency>
      

      现在一切正常。

      【讨论】:

        猜你喜欢
        • 2014-09-29
        • 2017-11-11
        • 2020-04-20
        • 2015-05-21
        • 2014-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-27
        相关资源
        最近更新 更多