如何在AWS CloudWatch中轮换日志?

时间:2016-02-21 18:07:17

标签: amazon-web-services logging amazon-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文档(上面的链接)中,它提到能够配置日志轮换策略,但我找不到任何提及/示例如何实际执行此操作。我已尝试将log_stream_name指定为 applog_%Y-%m-%d.log ,但它会按字面解释。

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

我认为您要的是日志到期。至少那是我一直在寻找的东西。这是在一定时间后使日志过期的方法:

  1. 通过sam template
  2. 通过控制台:
    1. 在AWS控制台仪表板上,导航至Cloudwatch >>日志。
    2. 在列出所有日志的表中,对于有问题的特定日志:,在“过期事件之后”列中单击“永不过期”。弹出窗口将允许您选择保留期限

答案 2 :(得分:0)

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

Cloudwatch Agent Docs

  

文件可以指向一个或多个文件(使用通配符)   例如/var/log/system.log*)。仅将最新文件推送到   基于文件修改时间的CloudWatch Logs。

因此,您只需开始写入与您的模式匹配的新文件,一切就可以了。