首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Amazon客户机中删除调试日志记录

如何从Amazon客户机中删除调试日志记录
EN

Stack Overflow用户
提问于 2017-11-13 19:07:27
回答 2查看 3.2K关注 0票数 2

我有以下简单的代码

代码语言:javascript
复制
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard().withRegion(Regions.US_EAST_1).build();
DescribeInstancesRequest request = new DescribeInstancesRequest();
DescribeInstancesResult response = ec2.describeInstances(request);

在运行此代码时,我看到了多行调试输出。我只展示了下面的开头。如何删除此输出?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2017-11-13 19:22:33

Log4j假设

假设您的应用程序的日志系统是通过log4j.properties这样的属性文件配置在您的Java类路径的基础上,您可以通过包含行来减少记录器的详细性。

代码语言:javascript
复制
log4j.logger.com.amazonaws=WARN

WARNERROR将保证为AWS中的记录器获取最少的日志。

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

代码语言:javascript
复制
log4j.logger.com.amazonaws.request=INFO

AWS支持的日志记录框架

AWS文档声明“支持的日志记录系统包括Java框架和Apache Log4j等”。我建议您到为Java调用记录AWS了解进一步的情况。

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

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

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2022-04-05 12:43:44

在引导spring引导环境之前,我一直在使用spring引导和使用aws客户端获取一些秘密,但是所有的秘密都会被用于调试消息,然后我尝试了许多方法,但这一种方法对我来说是有效的:

代码语言:javascript
复制
 LoggerContext loggerContext = (LoggerContext) 
 LoggerFactory.getILoggerFactory();
 loggerContext.getLogger("org.apache.http").setLevel(Level.INFO);
 loggerContext.getLogger("com.amazonaws").setLevel(Level.INFO);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47271728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档