使用正确的时间戳将log4j2 JSON格式的日志文件上传到AWS CloudWatch

时间:2019-06-21 08:30:06

标签: amazon-web-services logging log4j2 amazon-cloudwatch amazon-cloudwatchlogs

我正在尝试将日志文件上传到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"}

  1. 较旧的代理抛出异常,因为它试图使用我配置的时间戳格式来解析消息中的时间戳,而不是timestamp字段中的时间戳。
  2. 统一代理无法解析亚秒精度的时间戳,这在尝试合并来自多个源的日志流时会导致问题。

那么,有没有更好的工具/策略可以将JSON格式的log4j2文件上传到CoudWatch?

0 个答案:

没有答案