簡體   English   中英

如何使用適用於 .NET 的 AWS 開發工具包將多個日志發送到單個 CloudWatch 日志流?

[英]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 ,它具有四個屬性:

  • LogGroupNamestring
  • LogStreamNamestring
  • LogEventsList<InputLogEvent> ,本質上是MessageTimestamp組合的列表)
  • SequenceTokenstring

序列令牌是一個字段,用於確保日志流的完整性以及日志事件以正確的順序寫入日志流。 所有請求都需要它,除了根據文檔第一次上傳到新創建的日志流。

有兩種方法可以獲得正確的值:

  1. 您向它提供在先前請求的響應中返回的SequenceToken

  2. 您使用DescribeLogStreams列出您的日志組中的日志事件,根據LogStreamName過濾掉您指定的日志流,然后在響應中使用UploadSequenceToken的值,作為您的PutLogEventsRequestSequenceToken

將所有這些放在一起,這應該是一個很好的起點:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM