Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Apache Commons HttpClient日志调优到Dropwizard_Java_Logging_Dropwizard_Apache Commons Httpclient - Fatal编程技术网

Java 将Apache Commons HttpClient日志调优到Dropwizard

Java 将Apache Commons HttpClient日志调优到Dropwizard,java,logging,dropwizard,apache-commons-httpclient,Java,Logging,Dropwizard,Apache Commons Httpclient,我正在使用Dropwizard,并且在一些逻辑中通过ApacheCommonsHttpClient触发请求 HttpClient打印出非常详细的日志,显然是在调试模式下 我尝试将其日志级别设置为与应用程序的其余部分相同,或者至少在配置文件中设置它,以便命令行可以轻松覆盖它 我失败了 我试着遵循不同的建议: 在main/resources/..文件夹中添加commons logging.properties文件,并将logging.loggers.org.apache.commons.httpc

我正在使用Dropwizard,并且在一些逻辑中通过ApacheCommonsHttpClient触发请求

HttpClient打印出非常详细的日志,显然是在调试模式下

我尝试将其日志级别设置为与应用程序的其余部分相同,或者至少在配置文件中设置它,以便命令行可以轻松覆盖它

我失败了

我试着遵循不同的建议:

  • 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);
logging:
#  level: INFO
  level: DEBUG
  loggers:
    com.gitlab.zloster: DEBUG
但我发现这是一种糟糕的做法,因为它使命令行无法覆盖此日志级别


有人解决了这个问题吗?

Dropwizard
正在使用
logback
slf4j
。我找不到直接支持
log4j
配置指令的
logback
参考

现在谈问题: 我有一个玩具Dropwizard项目,目前使用版本1.3.4。我将简单资源方法配置为针对外部HTTP地址执行
GET
。在
config.yml
文件中,我有以下内容:

Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.ERROR);
Logger.getLogger("httpclient").setLevel(Level.ERROR);
logging:
#  level: INFO
  level: DEBUG
  loggers:
    com.gitlab.zloster: 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

代码在这里:

Dropwizard
正在使用
logback
slf4j
。我找不到直接支持
log4j
配置指令的
logback
参考

现在谈问题: 我有一个玩具Dropwizard项目,目前使用版本1.3.4。我将简单资源方法配置为针对外部HTTP地址执行
GET
。在
config.yml
文件中,我有以下内容:

Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.ERROR);
Logger.getLogger("httpclient").setLevel(Level.ERROR);
logging:
#  level: INFO
  level: DEBUG
  loggers:
    com.gitlab.zloster: 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

代码如下:

此问题和答案可能也会引起兴趣:此问题和答案可能也会引起兴趣: