AWS Elastic Beanstalk 日志轮转

ang*_*rab 5 logrotate amazon-web-services amazon-elastic-beanstalk

我正在 AWS Elastic Beanstalk 上运行 java 应用程序(Java 8 在 64 位 Amazon Linux/2.7.4 上运行) 默认情况下,java 应用程序将日志记录到 STDOUT,Elastic Beanstalk 自动将 STDOUT 存储在 /var/log/web-1.log 中。这按预期工作。

有关 Elastic Beanstalk 如何捕获和存储 STDOUT 的更多信息,请参阅https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-procfile.html 。

web-1.log 文件达到一定大小后,会轮换到 /var/log/rotated/web-1.logXXX.gz。但是,一旦发生这种情况,原始 web-1.log 文件将被清除(预期),并且不会再将任何日志消息写入该文件(非预期)。所有未来的日志消息似乎都直接进入轮换日志目录中的文件。

有什么想法可能导致这种情况吗?我没有对 Elastic Beanstalk 处理日志轮换的方式进行任何更改。

And*_*zlo -1

Elastic Beanstalk 实例(至少是我正在使用的实例)正在运行 logrotate 守护程序。也许您可以通过放入配置文件来配置它/etc/logrotate.d

空日志的问题可能是日志轮换时的陈旧文件句柄?有关如何处理该问题的一些示例,请参阅此答案。