如何在 AWS CloudWatch 中轮换日志?

How to rotate logs in AWS CloudWatch?

我正在使用 Amazon CloudWatch Log Agent (AWS documentation) 将日志从我的 EC2 实例上传到 CloudWatch 控制台。

对于我在 EC2 上的 CloudWatch Log Agent 配置,我有以下内容:

[general]
state_file = /var/awslogs/state/agent-state  

[applog]
file = /var/www/html/logs/applog.log
log_group_name = MyApp
log_stream_name = applog.log
datetime_format = %Y-%m-%d %H:%M:%S

我的问题是,如何让 applog.log 每天轮换一次?在 AWS 文档(link 上面)中,它提到能够配置日志轮换策略,但我找不到任何 mention/example 如何实际执行此操作。我试过将 log_stream_name 指定为 applog_%Y-%m-%d.log,但它按字面解释。

非常欢迎任何正确方向的想法或指示 - 谢谢!

我认为没有办法使用 Amazon 的 CloudWatch Log Agent 轮换 log_stream_name。文档中描述的日志轮换与提取系统轮换的日志文件有关,CloudWatch Log Agent 本身不执行任何日志轮换。

根据 the documentationlog_stream_name 属性 中允许的唯一变量是 {instance_id}{hostname}{ip_address}

我认为您要求的是日志过期时间。至少那是我一直在寻找的。以下是您可以在一定时间后使日志过期的方法:

  1. 通过
  2. 通过控制台:
    1. 在 AWS 控制台仪表板上,导航至 Cloudwatch>>日志。
    2. 在列出所有日志的 table 中,对于您有问题的特定日志:,单击 "Expire Events After" 列中的 "Never expire"。弹出窗口将允许您选择保留期

根据代理文档,日志文件名可以包含通配符。

Cloudwatch Agent Docs

File can point to a specific file or multiple files (using wildcards such as /var/log/system.log*). Only the latest file is pushed to CloudWatch Logs based on file modification time.

因此,您可以开始写入与您的模式匹配的新文件,一切都应该没问题。