我正在使用 Dropwizard,并在一些逻辑中通过 Apache Commons HttpClient 触发请求。
HttpClient 打印出非常详细的日志,显然是在 Debug模式下。
我尝试将其日志级别设置为与应用程序的其余部分相同,或者至少将其设置在配置文件中,以便可以通过命令行轻松覆盖它。
我失败了。
我尝试遵循不同的建议here :
- 在
main/resources/...
文件夹中添加commons-logging.properties
文件,并将logging.loggers."org.apache.commons.httpclient": "INFO"
添加到 Dropwizard 配置文件 - 将
org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog
或log4j.logger.org.apache=WARN
作为命令行属性传递
最后我做了以下事情:
Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.ERROR);
Logger.getLogger("httpclient").setLevel(Level.ERROR);
但我发现这是不好的做法,因为它使得无法通过命令行覆盖此日志级别。
有人解决这个问题了吗?
最佳答案
Dropwizard
使用 logback
和 slf4j
。我找不到 logback
直接支持 log4j
配置指令的引用资料。
现在回答这个问题:
我有一个玩具 Dropwizard 项目当前使用版本 1.3.4。我配置简单的资源方法来针对外部 HTTP 地址执行 GET
。在 config.yml 文件中,我有以下内容:
logging:
# level: INFO
level: DEBUG
loggers:
com.gitlab.zloster: DEBUG
此配置为我提供了非常详细的 DEBUG
日志记录:
DEBUG [2019-04-30 14:30:27,035] org.apache.http.client.protocol.RequestAddCookies: CookieSpec selected: ignoreCookies
DEBUG [2019-04-30 14:30:27,035] org.apache.http.client.protocol.RequestAuthCache: Auth cache not set in the context
DEBUG [2019-04-30 14:30:27,035] com.codahale.metrics.httpclient.InstrumentedHttpClientConnectionManager: Connection request: [route: {s}->https://www.dir.bg:443][total kept alive: 0; route allocated: 0 of 1024; total allocated: 1 of 1024]
DEBUG [2019-04-30 14:30:27,035] com.codahale.metrics.httpclient.InstrumentedHttpClientConnectionManager: Connection leased: [id: 2][route: {s}->https://www.dir.bg:443][total kept alive: 0; route allocated: 1 of 1024; total allocated: 2 of 1024]
DEBUG [2019-04-30 14:30:27,035] org.apache.http.impl.execchain.MainClientExec: Opening connection {s}->https://www.dir.bg:443
DEBUG [2019-04-30 14:30:27,039] org.apache.http.impl.conn.DefaultHttpClientConnectionOperator: Connecting to www.dir.bg/194.145.63.12:443
DEBUG [2019-04-30 14:30:27,039] org.apache.http.conn.ssl.SSLConnectionSocketFactory: Connecting socket to www.dir.bg/194.145.63.12:443 with timeout 500
DEBUG [2019-04-30 14:30:27,053] org.apache.http.conn.ssl.SSLConnectionSocketFactory: Enabled protocols: [TLSv1, TLSv1.1, TLSv1.2]
DEBUG [2019-04-30 14:30:27,053] org.apache.http.conn.ssl.SSLConnectionSocketFactory: Enabled cipher suites:[TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
DEBUG [2019-04-30 14:30:27,053] org.apache.http.conn.ssl.SSLConnectionSocketFactory: Starting handshake
DEBUG [2019-04-30 14:30:27,060] org.apache.http.conn.ssl.SSLConnectionSocketFactory: Secure session established
DEBUG [2019-04-30 14:30:27,060] org.apache.http.conn.ssl.SSLConnectionSocketFactory: negotiated protocol: TLSv1.2
DEBUG [2019-04-30 14:30:27,060] org.apache.http.conn.ssl.SSLConnectionSocketFactory: negotiated cipher suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
DEBUG [2019-04-30 14:30:27,060] org.apache.http.conn.ssl.SSLConnectionSocketFactory: peer principal: CN=*.dir.bg, OU=PositiveSSL Wildcard, OU=Domain Control Validated
如果我将配置更改为:
logging:
level: INFO
# level: DEBUG
loggers:
com.gitlab.zloster: DEBUG
我得到了非常干净的日志:
INFO [2019-04-30 14:44:30,742] org.eclipse.jetty.setuid.SetUIDListener: Opened application@44fff386{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
INFO [2019-04-30 14:44:30,745] org.eclipse.jetty.server.Server: jetty-9.4.z-SNAPSHOT; built: 2018-05-03T15:56:21.710Z; git: daa59876e6f384329b122929e70a80934569428c; jvm 1.8.0_111-8u111-b14-3~12.04-b14
INFO [2019-04-30 14:44:31,391] io.dropwizard.jersey.DropwizardResourceConfig: The following paths were found for the configured resources:
GET /external (com.gitlab.zloster.resources.ExternalResource)
GET /moment (com.gitlab.zloster.resources.MomentResource)
GET /validate (com.gitlab.zloster.resources.ValidationResource)
POST /validate (com.gitlab.zloster.resources.ValidationResource)
INFO [2019-04-30 14:44:31,395] org.eclipse.jetty.server.handler.ContextHandler: Started i.d.j.MutableServletContextHandler@44598ef7{/,null,AVAILABLE}
INFO [2019-04-30 14:44:31,413] org.eclipse.jetty.server.AbstractConnector: Started application@44fff386{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
INFO [2019-04-30 14:44:31,414] org.eclipse.jetty.server.Server: Started @2757ms
127.0.0.1 - - [30/Apr/2019:14:44:38 +0000] "GET /external HTTP/1.1" 200 65 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" 368
127.0.0.1 - - [30/Apr/2019:14:44:40 +0000] "GET /external HTTP/1.1" 200 65 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" 54
127.0.0.1 - - [30/Apr/2019:14:44:46 +0000] "GET /external HTTP/1.1" 200 65 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" 63
代码在这里:https://gitlab.com/zloster/dropwizard-static/commit/16c3dba9ea46f1223d84f975779aec4876bf4507
关于java - 将 Apache Commons HttpClient 日志调整为 Dropwizard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55894123/