amazon-web-services - 使用正确的时间戳将 log4j2 JSON 格式的日志文件上传到 AWS CloudWatch
问题描述
我正在尝试将日志文件上传到 AWS CloudWatch。该应用程序正在将 log4j2 样式的 JSON 输出到一个文件中:
https://logging.apache.org/log4j/2.x/manual/layouts.html#JSONLayout
AWS 为此任务提供了 2 个 cloudwatch 日志代理。一个“老”代理和一个“统一”代理:
https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html
我尝试使用这两个代理,但遇到了以下问题,主要与解析时间戳有关,以及代理在整个日志行上进行正则表达式匹配并且没有将其解析为 JSON 的事实:
示例日志消息(省略其他字段):
{"message": "Processing data for previous day: 2019-06-17T02:01:00", "timestamp": "2019-06-18T17:16:19.338000+0100"}
- 旧代理引发异常,因为它试图使用我配置的时间戳格式来解析消息中的时间戳,而不是
timestamp
字段中的时间戳。 - 统一代理无法解析具有亚秒精度的时间戳,这在尝试组合来自多个源的日志流时会导致问题。
那么,是否有更好的工具/策略将 JSON 格式的 log4j2 文件上传到 CoudWatch?
解决方案
推荐阅读
- c# - 多次显示和隐藏带有幻灯片动画的 WPF 窗口,同时每次都一致地显示动画
- javascript - 你如何让 Material-UI 选项卡与 react-router 一起工作?
- python - 烧瓶棉花糖 base_fields.Function in base_fields.Nested
- java - Spring @ConditionalOnProperty havingValue = "value1" 或 "value2"
- android - 我想读取服务器发送的数据(我的服务器是 esp8266)
- wpf - WPF:如何使用透明级别设置我的表单样式
- javascript - 我的 CodePlayer 无法处理我的 Blogger 帖子
- c# - C# 4 个字节 [] 数组到 int[] 的索引
- python-3.x - PIP 安装 pywin32 服务失败:功能不正确
- java - 通过选择中间元素创建序列