【发布时间】:2019-04-24 12:00:37
【问题描述】:
我有一个 .netcore 处理 AWS Lambda,它以 json 格式将日志写入一个 AWS CloudWatch 日志流。大约它会写入大约 200/400 个日志条目,每个条目包含大约 800 行(最大 25kb)的 json 数据。
一旦 Lambda 处理完日志,另一个导出 Lambda 会将日志写入 excel 文件并将文件导出到 S3。问题是,当 CloudWatch 有 200 个条目时,它只写入大约 110 个日志。我可以在控制台中看到有 200 个日志条目,但 excel 文件只包含大约 110 到 116 行。
在导出到 excel 之前,我首先检查了日志条目的计数,我注意到计数不正确。它应该是 200,但错误地是 110。 我正在写的代码是:
using (AmazonCloudWatchLogsClient client = new AmazonCloudWatchLogsClient("xxx", "xxx", "xx-xxxx-2"))
{
var request = new FilterLogEventsRequest()
{
LogGroupName = GroupName,
LogStreamNames = new List<string>() { StreamName }
};
Task<FilterLogEventsResponse> response = client.FilterLogEventsAsync(request);
response.Wait();
if (null != response.Result && null != response.Result.Events)
result = response.Result.Events.Count;
}
我进一步测试,当我编写简单的文本而不是长的 json 数据时,我在上面的代码中得到了正确的计数。但是,当日志包含长 json 数据时;我收到不正确的计数。为了测试,当我将 json 数据剥离到少于 200 行时,我得到了正确的计数。
那么,有什么限制吗?是不是FilterLogEventsAsync()函数在写入大量json数据(25kb或800行)时无法获取所有日志?
【问题讨论】: