Java 如何从AmazonEC2客户端删除调试日志记录

Java 如何从AmazonEC2客户端删除调试日志记录,java,amazon-web-services,logging,amazon-ec2,Java,Amazon Web Services,Logging,Amazon Ec2,我有以下简单的代码 AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard().withRegion(Regions.US_EAST_1).build(); DescribeInstancesRequest request = new DescribeInstancesRequest(); DescribeInstancesResult response = ec2.describeInstances(request); 运行此代码时,我看到多行调试输出

我有以下简单的代码

AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard().withRegion(Regions.US_EAST_1).build();
DescribeInstancesRequest request = new DescribeInstancesRequest();
DescribeInstancesResult response = ec2.describeInstances(request);
运行此代码时,我看到多行调试输出。我只显示下面的开头。如何删除此输出

14:03:29.877 [main] DEBUG com.amazonaws.AmazonWebServiceClient - Internal logging successfully configured to commons logger: true
14:03:38.129 [main] DEBUG com.amazonaws.metrics.AwsSdkMetrics - Admin mbean registered under com.amazonaws.management:type=AwsSdkMetrics
14:03:38.480 [main] DEBUG com.amazonaws.auth.AWSCredentialsProviderChain - Unable to load credentials from EnvironmentVariableCredentialsProvider: Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY))
14:03:38.482 [main] DEBUG com.amazonaws.auth.AWSCredentialsProviderChain - Unable to load credentials from SystemPropertiesCredentialsProvider: Unable to load AWS credentials from Java system properties (aws.accessKeyId and aws.secretKey)
14:03:38.580 [main] DEBUG com.amazonaws.auth.AWSCredentialsProviderChain - Loading credentials from com.amazonaws.auth.profile.ProfileCredentialsProvider@7fb9f71f
14:03:38.786 [main] DEBUG com.amazonaws.request - Sending Request: POST https://ec2.us-east-1.amazonaws.com / Parameters: ({"Action":["DescribeInstances"],"Version":["2016-11-15"]}Headers: (User-Agent: aws-sdk-java/1.11.135 Mac_OS_X/10.12.6 Java_HotSpot(TM)_64-Bit_Server_VM/25.144-b01/1.8.0_144, amz-sdk-invocation-id: 0a1303b3-16c0-b140-8d9b-b2e22dc685b1, ) 
14:03:40.160 [main] DEBUG com.amazonaws.auth.AWS4Signer - AWS4 Canonical Request: '"POST /

 amz-sdk-invocation-id:0a1303b3-16c0-b140-8d9b-b2e22dc685b1
 amz-sdk-retry:0/0/500
 host:ec2.us-east-1.amazonaws.com
 user-agent:aws-sdk-java/1.11.135 Mac_OS_X/10.12.6 Java_HotSpot(TM)_64-Bit_Server_VM/25.144-b01/1.8.0_144
 x-amz-date:20171113T190338Z

Log4j假设

假设应用程序的日志系统是通过Java类路径底部的属性文件(如
log4j.properties
)配置的,那么可以通过包含行

log4j.logger.com.amazonaws=WARN
WARN
ERROR
将保证您在AWS SDK中为记录器获取的日志数量最少

如果您希望为AWS SDK的特定组件保持更细粒度的日志记录级别,则始终可以在受限范围(即
com.amazonaws
的子包)上覆盖该级别,例如:

AWS Java SDK支持的日志框架

AWS SDK文档说明“受支持的日志系统包括Java日志框架和Apache Log4j等”。 我请你查阅更多资料

检查测试使用哪个日志框架

从Gradle引用的ApacheCommons日志库是日志库之上的抽象层,日志库提供了记录器的实际实现。它本身并不是测试使用的日志实现。在您提供的语句中,您使用的是Java日志框架(
Java.util.Logger
a.k.a JUL)。但它真的是您的测试使用的日志实现吗

为了验证log4j是否在测试的类路径上,可以做的一个快速检查是添加VM参数
-Dlog4j.debug=true
,然后启动测试。如果log4j在类路径上,您将看到控制台上打印的库的一些输出

您还可以检查测试的运行时类路径,因为可能存在到日志库的可传递依赖项(与直接依赖项相反),这些依赖项在编译时依赖项列表中可能不可见


最后一种方法是设置断点并进行调试,以查看SDK本身使用了哪个记录器(在测试中调用此代码,因为它显示在您提供的日志中)。

您建议的不是Java代码。如何将其插入Java代码中?这取决于日志库-您使用哪一个日志库?在gradle dependencies中,我看到了commons logging:commons logging:1.2ok,我认为该库将尝试使用的第一个日志库是log4j。是否编译以下内容:
Configurator.setLevel(“com.amazonaws”,Level.WARN)
?已编译但没有帮助:java.util.logging.Logger.getLogger(“com.amazonaws”).setLevel(Level.WARNING);
log4j.logger.com.amazonaws.request=INFO