我有以下简单的代码
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发布于 2017-11-13 19:22:33
Log4j假设
假设您的应用程序的日志系统是通过log4j.properties这样的属性文件配置在您的Java类路径的基础上,您可以通过包含行来减少记录器的详细性。
log4j.logger.com.amazonaws=WARNWARN或ERROR将保证为AWS中的记录器获取最少的日志。
如果希望为AWS的特定组件保留更细粒度的日志记录级别,则可以始终在受限范围(即com.amazonaws的一个子包)上覆盖该级别。
log4j.logger.com.amazonaws.request=INFOAWS支持的日志记录框架
AWS文档声明“支持的日志记录系统包括Java框架和Apache Log4j等”。我建议您到为Java调用记录AWS了解进一步的情况。
检查测试使用哪个日志记录框架
Gradle引用的Apache库是日志库之上的一个抽象层,它提供了记录器的实际实现。它本身并不是测试使用的日志记录实现。在您提供的语句中,您使用的是Java框架( java.util.Logger a.k.aJul)。但是,这真的是您的测试使用的日志记录实现吗?
要验证log4j是否在测试的类路径中,您可以做的一项快速检查是添加VM参数-Dlog4j.debug=true并启动测试。如果您的类路径上有log4j,您将看到控制台上打印的库中的一些输出。
您还可以检查测试的运行时类路径,因为可能存在到日志库的传递依赖项(而不是直接依赖项),这在编译时依赖项列表中是不可见的。
最后一种可能的方法是放置一个断点那里并进行调试,以查看哪个记录器是从SDK本身使用的(这段代码在您的测试中被调用,因为它显示在您提供的日志中)。
发布于 2022-04-05 12:43:44
在引导spring引导环境之前,我一直在使用spring引导和使用aws客户端获取一些秘密,但是所有的秘密都会被用于调试消息,然后我尝试了许多方法,但这一种方法对我来说是有效的:
LoggerContext loggerContext = (LoggerContext)
LoggerFactory.getILoggerFactory();
loggerContext.getLogger("org.apache.http").setLevel(Level.INFO);
loggerContext.getLogger("com.amazonaws").setLevel(Level.INFO);https://stackoverflow.com/questions/47271728
复制相似问题