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

有关弹性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处理日志旋转的方式进行任何更改。

最佳答案

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

空日志的问题可能是从旋转日志时起过时的文件句柄?有关如何处理该示例的示例,请参见this answer

07-24 09:39
查看更多