回答

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 
} 
+0

剛擡起頭,以'#AWSLogsClient一個describeLogStreams'調用使用'logGroupName'不存在會產生一個'ResourceNotFoundException' 。如果您不確定是否存在日誌組,則應該處理該異常。 – Trein

0

在現實中,以AWSLogsClient#describeLogStreams調用使用logGroupName不存在會產生ResourceNotFoundException 。因此,您應該檢查:

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