Cen*_*ius 6 .net logging amazon-cloudwatch aws-lambda
我想直接快速访问 AWS lambda 中的日志。
我可以查询 CloudWatch,但它需要时间来获取数据。
是否可以在 Lambda 中获取所有执行日志并返回此数据作为响应?
谢谢@John 的回答,我在这里提供更多信息:
我在 .NET 中为 lambda 使用专用记录器
https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.Logging.AspNetCore
如果出现任何问题,我的应用程序需要登录以进行调试。
例如,您要访问什么类型的“日志”
我只在 lambda 函数中在不同的日志记录级别上记录一些数据,例如:
我想获取所有记录的语句,这些语句通过日志记录级别传递并尽快在 lambda 响应中返回所有这些信息。日志数据必须引用特定的 lambda 执行。否则,将毫无用处。
您要从 CloudWatch 寻找什么类型的数据?
如果发生,我主要需要记录的字符串消息和异常。如果可能的话,包含特定日志调用的时间可能会很好。此外,一些“日志”ID 可以作为参考 - 有类似 RequestId 的东西。
现在我可以获取所有在 CloudWatch 中进行查询的日志,但这需要时间,而且速度太慢。我执行 API 调用:StartQueryAsync,然后是 GetQueryResultsAsync。解决方案应该尽可能快。我可以制作丑陋的自定义记录器,我可以在其中收集所有日志给 ex。列出 myLogs 并简单地作为 JSON 返回响应,但我希望有很好的 AWS 解决方案可以达到这个目的。
“执行日志”是什么意思?
我的意思是在 Lambda 简单函数运行时由记录器生成的所有日志。
LambdaFunction(request, context){
InitializeLoggerWithLogLevel(debug);
logger.LogInfo("Log Info"); //Not logged due to min log level Debug
logger.LogTrace("Log Trace"); //Logged, trace > debug
logger.LogDebug("Log debug"); //Logged, debug == debug
Run Code Online (Sandbox Code Playgroud)
您指的是存储在 Amazon CloudWatch Logs 中的 AWS Lambda 函数的输出吗?
是的,我可以从那里查询日志,但需要几秒钟才能获得它。我会更快地获取数据。
我可以相信 AWS 没有提供这样的解决方案。解决方法可能是通过 ex 将获取日志委托给另一个 lambda。SQS 或将执行的特定 lambda 函数的日志移动到 S3 存储桶,然后提供用户链接以供下载。我的第一个主要 lambda 必须很快,可以处理许多请求,例如机枪;)。
请建议我最好的方法。我愿意进一步讨论。
问候,
如果每秒处理 50 个事务,CloudWatch 事务就会受到限制。您可以要求增加此限制:https://console.aws.amazon.com/support/home#/case/create ?issueType=service-limit-increase&limitType=service-code-cloudwatch-logs
参考:https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html
如果可能的话,包含特定日志调用的时间可能会很好。此外,一些“日志”Id 作为参考会很好 - 有类似 RequestId 的东西。现在我可以获取所有在 CloudWatch 中进行查询的日志,但这需要时间而且速度太慢。
如果您正在寻求 FAST 解决方案并且您确实正在突破 CloudWatch 限制,请使用 DynamoDB。
| 归档时间: |
|
| 查看次数: |
292 次 |
| 最近记录: |