在从日志组获取日志事件之前,java 中是否有任何方法可以检查给定的日志组和日志流是否存在?
问问题
4028 次
2 回答
1
伪代码:验证日志组的日志流是否存在
- 构建describeLogStreamsRequest:
- 在构造函数或请求的
withLogGroupName
设置器上传递给定的日志组名称。 - 在请求的
withLogStreamNamePrefix
设置器中传入日志流名称。
- 在构造函数或请求的
- 调用describeLogStreams。
- 检查DescribeLogStreamsResult对象上生成的日志流。如果列表不为空,您可以安全地对该流进行进一步操作。
Java:验证日志组的日志流是否存在(注意:未经测试)
AWSLogsClient logs = new AWSLogsClient();
DescribeLogStreamsRequest req = new DescribeLogStreamsRequest("myLogGroupName")
.withLogStreamNamePrefix("myLogStreamName");
DescribeLogStreamsResult res = logs.describeLogStreams(req);
if(res != null && res.getLogStreams() != null && !res.getLogStreams().isEmpty())
{
// Log Stream exists, do work here
}
于 2016-11-23T17:12:21.823 回答
0
实际上,调用不存在的 a 将生成AWSLogsClient#describeLogStreams
a 。因此,您应该检查:logGroupName
ResourceNotFoundException
- 的缺席
ResourceNotFoundException
。 DescribeLogStreamsResult#getLogStreams
匹配提供的单个条目的存在logStreamName
。
将执行此操作的方法的代码片段:
private boolean doesLogStreamExist() {
DescribeLogStreamsRequest request = new DescribeLogStreamsRequest()
.withLogGroupName(logGroupName)
.withLogStreamNamePrefix(logStreamName);
try {
return client.describeLogStreams(request).getLogStreams()
.stream()
.anyMatch(it -> it.getLogStreamName().equals(logStreamName));
} catch (ResourceNotFoundException e) {
// log group does not exist
return false;
}
}
于 2017-12-28T18:43:56.847 回答