如何禁用 Jersey Client 2.x 中的日志记录?

How to disable logging in Jersey Client 2.x?

我 运行 在测试中使用 Jersey 客户端 (2.25.1) 调用服务端点的简单 Dropwizard (1.2.0) Web 服务。对于每个请求,我都会在控制台上获得一个日志条目,例如:

127.0.0.1 - - [25/Oct/2017:21:17:10 +0000] "GET /query?name=John+Doe+1 HTTP/1.1" 200 48 "-" "Jersey/2.25.1 (HttpUrlConnection 1.8.0_92)" 84
127.0.0.1 - - [25/Oct/2017:21:17:10 +0000] "GET /query?name=John+Doe+2 HTTP/1.1" 200 48 "-" "Jersey/2.25.1 (HttpUrlConnection 1.8.0_92)" 84
127.0.0.1 - - [25/Oct/2017:21:17:10 +0000] "GET /query?name=John+Doe+0 HTTP/1.1" 200 48 "-" "Jersey/2.25.1 (HttpUrlConnection 1.8.0_92)" 84

我想禁止在控制台上打印这些日志条目,因为它们使我的输出变得混乱。我假设他们来自泽西岛客户?我错了吗?所以我在创建客户端时尝试禁用它,如下所示:

ClientConfig clientConfig = new ClientConfig();
clientConfig.property(LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, Level.OFF);
Client client = ClientBuilder.newClient(clientConfig);
return client;

但这没有任何效果 - 日志条目仍然转储到控制台上。

如何禁用这些日志条目?

我认为您可能需要转到主应用程序 class 并找到记录器连接到 Jersey 环境的位置。该行应类似于:

environment.jersey().register(new LoggingFeature(...));

尝试 deleting/commenting 那一行。

它们是dropwizard服务器打印的请求日志。如果您只是不想在控制台上打印它们,您可以将它们记录到一个文件中。在您的测试 yaml 配置文件中的 server: 属性 下面添加以下配置。

requestLog:
    timeZone: UTC
    appenders:
      - type: file
        currentLogFilename: /var/log/request.log
        threshold: ALL

您也可以通过在测试配置中指定没有附加程序来禁用它。

requestLog:
   appenders: []