1

在 Java8 中使用 log4j 1.2.17 和 com.spotify.docker-client 6.1.1。如果我在 DEBUG 中设置 log4j 根日志级别,那么 docker 客户端的 http-api 会在日志中写入许多消息,例如

09:42:50,624 DEBUG jersey-client-async-executor-0 headers:onResponseReceived:113 - http-outgoing-13 << HTTP/1.1 200 OK
09:42:50,624 DEBUG jersey-client-async-executor-0 headers:onResponseReceived:116 - http-outgoing-13 << Api-Version: 1.37
09:42:50,624 DEBUG jersey-client-async-executor-0 headers:onResponseReceived:116 - http-outgoing-13 << Docker-Experimental: false
09:42:50,624 DEBUG jersey-client-async-executor-0 headers:onResponseReceived:116 - http-outgoing-13 << Ostype: linux
09:42:50,624 DEBUG jersey-client-async-executor-0 headers:onResponseReceived:116 - http-outgoing-13 << Server: Docker/18.03.1-ce (linux)
09:42:50,624 DEBUG jersey-client-async-executor-0 headers:onResponseReceived:116 - http-outgoing-13 << Date: Thu, 04 Oct 2018 06:42:50 GMT
09:42:50,624 DEBUG jersey-client-async-executor-0 headers:onResponseReceived:116 - http-outgoing-13 << Content-Type: text/plain; charset=utf-8
09:42:50,624 DEBUG jersey-client-async-executor-0 headers:onResponseReceived:116 - http-outgoing-13 << Transfer-Encoding: chunked

我不明白如何禁用它。我所有的尝试:

log4j.rootLogger=DEBUG, stdout
log4j.logger.jersey-client-async-executor-0=INFO
log4j.logger.com.sun.jersey=INFO
log4j.logger.com.spotify=INFO

这并不能阻止它。如何禁用 jersey-client-async-executor-0 的 DEBUG-loggin ?谢谢。

4

2 回答 2

0

您正在将日志级别设置为Debug,然后您正在登录记录器jersey-client,因此它也被设置为 Debug 级别。

将您的 rootlogger 设置为不同的级别,或者不要将 jersey-client 添加到记录器。

于 2018-10-04T09:41:18.017 回答
0

log4j所有用户定义的记录器中,都从其父级继承,并且所有记录器都是直接或间接的子级rootLogger.

为了阻止您的记录器从父级继承,请将其添加到您的代码中:

log4j.additivity.jersey-client-async-executor-0=false

这将允许您为该特定组件定义您想要的任何日志级别,并且只定义您定义的日志级别。所以你只需要:

log4j.rootLogger=DEBUG, stdout
log4j.logger.jersey-client-async-executor-0=INFO, stdout
log4j.additivity.jersey-client-async-executor-0=false

请注意,您还可以为您定义的每个记录器设置不同的附加程序。

于 2018-10-08T07:19:46.987 回答