in cloudwatch_logs_common/src/utils/cloudwatch_logs_facade.cpp [274:330]
Aws::CloudWatchLogs::ROSCloudWatchLogsErrors CloudWatchLogsFacade::CheckLogStreamExists(
const std::string & log_group, const std::string & log_stream,
Aws::CloudWatchLogs::Model::LogStream * log_stream_object)
{
Aws::CloudWatchLogs::ROSCloudWatchLogsErrors status = CW_LOGS_LOG_STREAM_NOT_FOUND;
Aws::CloudWatchLogs::Model::DescribeLogStreamsRequest describe_log_stream_request;
Aws::String next_token;
describe_log_stream_request.SetLogGroupName(log_group.c_str());
describe_log_stream_request.SetLogStreamNamePrefix(log_stream.c_str());
while (CW_LOGS_LOG_STREAM_NOT_FOUND == status) {
if (next_token.size() != 0) {
describe_log_stream_request.SetNextToken(next_token);
}
const auto & response = this->cw_client_->DescribeLogStreams(describe_log_stream_request);
if (!response.IsSuccess()) {
if(response.GetError().GetErrorType() == Aws::CloudWatchLogs::CloudWatchLogsErrors::NETWORK_CONNECTION) {
status = CW_LOGS_NOT_CONNECTED;
} else {
status = CW_LOGS_FAILED;
}
AWS_LOGSTREAM_WARN(
__func__, "Request to check if log stream named "
<< log_stream << " exists in log group named: " << log_group
<< ". Error message: " << response.GetError().GetMessage()
<< ", with error code: " << static_cast<int>(response.GetError().GetErrorType()));
break;
}
auto & log_stream_list = response.GetResult().GetLogStreams();
next_token = response.GetResult().GetNextToken();
for (const auto & curr_log_stream : log_stream_list) {
if (curr_log_stream.GetLogStreamName().c_str() == log_stream) {
AWS_LOGSTREAM_DEBUG(__func__, "Found Log Stream named: " << log_stream << " in Log Group :"
<< log_group << ".");
if (nullptr != log_stream_object) {
*log_stream_object = curr_log_stream;
}
status = CW_LOGS_SUCCEEDED;
break;
}
}
if (CW_LOGS_SUCCEEDED != status && next_token.size() == 0) {
AWS_LOGSTREAM_INFO(__func__, "Failed to find Log Stream named: " << log_stream
<< ".");
break;
}
}
return status;
}