2
在從日誌組獲取日誌事件之前,java中是否有任何方法來檢查給定的日誌組和日誌流是否存在?如何驗證Cloudwatch Log Group和Log Stream是否存在?
在從日誌組獲取日誌事件之前,java中是否有任何方法來檢查給定的日誌組和日誌流是否存在?如何驗證Cloudwatch Log Group和Log Stream是否存在?
僞碼:驗證日誌組的日誌流存在
withLogGroupName
制定者。withLogStreamNamePrefix
設置器中的日誌流名稱。的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
}
在現實中,以AWSLogsClient#describeLogStreams
調用使用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;
}
}
剛擡起頭,以'#AWSLogsClient一個describeLogStreams'調用使用'logGroupName'不存在會產生一個'ResourceNotFoundException' 。如果您不確定是否存在日誌組,則應該處理該異常。 – Trein