【问题标题】:How do I validate that a Cloudwatch Log Group and Log Stream exists?如何验证 Cloudwatch 日志组和日志流是否存在?
【发布时间】:2016-11-15 03:36:58
【问题描述】:

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

【问题讨论】:

    标签: java amazon-web-services aws-sdk aws-java-sdk amazon-cloudwatchlogs


    【解决方案1】:

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

    1. 构建describeLogStreamsRequest:
      • 在构造函数或请求的withLogGroupName setter 上传递给定的日志组名称。
      • 在请求的withLogStreamNamePrefix setter 中传入日志流名称。
    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
    }
    

    【讨论】:

    • 请注意,使用不存在的logGroupName 调用AWSLogsClient#describeLogStreams 将生成ResourceNotFoundException。如果不确定日志组是否存在,则应处理异常。
    【解决方案2】:

    实际上,使用不存在的logGroupName 调用AWSLogsClient#describeLogStreams 将生成ResourceNotFoundException。因此,您应该检查:

    1. 没有ResourceNotFoundException
    2. DescribeLogStreamsResult#getLogStreams 中存在与提供的logStreamName 匹配的单个条目。

    执行此操作的方法的代码 sn-p:

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-21
      • 2019-07-21
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      • 2019-12-24
      • 2021-09-28
      • 1970-01-01
      相关资源
      最近更新 更多