4

在从日志组获取日志事件之前,java 中是否有任何方法可以检查给定的日志组和日志流是否存在?

4

2 回答 2

1

伪代码:验证日志组的日志流是否存在

  1. 构建describeLogStreamsRequest
    • 在构造函数或请求的withLogGroupName设置器上传递给定的日志组名称。
    • 在请求的withLogStreamNamePrefix设置器中传入日志流名称。
  2. 调用describeLogStreams
  3. 检查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#describeLogStreamsa 。因此,您应该检查:logGroupNameResourceNotFoundException

  1. 的缺席ResourceNotFoundException
  2. 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 回答