![](/img/trans.png)
[英]How can I read cloudwatch logs using `aws-sdk`in nodejs
[英]How can I send multiple logs to a single CloudWatch log stream using the AWS SDK for .NET?
是否有關於如何使用 C# 中的PutLogEvent
API 將多個日志發送到單個 CloudWatch 日志流的代碼示例?
是的,您可以使用AmazonCloudWatchLogsClient
類上的PutLogEvents
方法將多個日志(通常稱為批處理)發送到單個 CloudWatch 日志流。
您需要構建一個PutLogEventsRequest
,它具有四個屬性:
LogGroupName
( string
)LogStreamName
( string
)LogEvents
( List<InputLogEvent>
,本質上是Message
和Timestamp
組合的列表)SequenceToken
( string
)序列令牌是一個字段,用於確保日志流的完整性以及日志事件以正確的順序寫入日志流。 所有請求都需要它,除了根據文檔第一次上傳到新創建的日志流。
有兩種方法可以獲得正確的值:
您向它提供在先前請求的響應中返回的SequenceToken
您使用DescribeLogStreams
列出您的日志組中的日志事件,根據LogStreamName
過濾掉您指定的日志流,然后在響應中使用UploadSequenceToken
的值,作為您的PutLogEventsRequest
的SequenceToken
將所有這些放在一起,這應該是一個很好的起點:
using Amazon.CloudWatchLogs;
using Amazon.CloudWatchLogs.Model;
var client = new AmazonCloudWatchLogsClient();
var request = new PutLogEventsRequest
{
LogGroupName = "your-log-group",
LogStreamName = "your-log-stream",
SequenceToken = "0000000000000000000000000000000000000000000000000",
LogEvents = new List<InputLogEvent>
{
new InputLogEvent { Message = "Message 1", Timestamp = DateTime.UtcNow },
new InputLogEvent { Message = "Message 2", Timestamp = DateTime.UtcNow }
}
};
var response = await client.PutLogEventsAsync(request);
var sequenceTokenFromFirstResponse = response.NextSequenceToken;
var secondRequest = new PutLogEventsRequest
{
LogGroupName = "your-log-group",
LogStreamName = "your-log-stream",
SequenceToken = sequenceTokenFromFirstResponse,
LogEvents = new List<InputLogEvent>
{
new InputLogEvent { Message = "Message 3", Timestamp = DateTime.UtcNow },
new InputLogEvent { Message = "Message 4", Timestamp = DateTime.UtcNow }
}
};
var secondResponse = await client.PutLogEventsAsync(secondRequest);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.