无法关闭HttpClient Wire调试日志消息

7
我一直在尝试设置Wire不向控制台发送DEBUG信息,但无论我怎么做,它都不听。我已正确地初始化了log4j:我没有收到任何appender消息,log4j遵循我的类和控制台级别。在log4j.properties中,我已经采用了所有可预见的方法来编写wire:
    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()中没有其他东西被打印出来。

我认为我已经阅读了谷歌上的每一个结果。如果有任何指导,将不胜感激。

关于项目:该项目是一个Maven项目 - pom.xml包括资源文件夹。为了使其工作,我实际上创建了一个ControlLogging类,并首先调用PropertyConfiguratior.configure("log4j.properties")。我在测试运行之前调用这个函数@Before,以及在制作API调用的静态类中。在任何时候进行打印都无法显示Wire日志记录器。

2个回答

7

对于我的项目最终有效的解决方案是创建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>

现在一切都正常工作。


对于Apache HTTP Client 5.2.1,添加<logger name="org.apache.hc.client5" level="INFO" />对我有用(尽管我不喜欢它)。 - Nikola

2

好的,我能够使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接