2

我有一个脚本,我从 tomcat 获取日志并将其发送到我的云资源中。一切正常,但是当我的 tomcat 旋转日志时出现问题。

当日志轮换时,其前缀为日期(日志每天轮换)。由于我的脚本每半小时运行一次,因此在轮换时我可能会错过日志,因为我在示例中使用静态名称获取日志logfile.log

在旋转之前,文件将如下所示:

logfile.log

旋转后,它看起来像这样:

logfile.log.2012-10-09

有没有办法摆脱这个问题?

编辑:

我的脚本:

cp /tomcat/logs/$logname $fileName 
gzip $fileName
s3cmd put $fileName.gz s3://x.x.x.x.x/$folderName

提前致谢。

4

1 回答 1

4

我认为备份日志的最佳方法是根据日志文件的 mtime 进行检查。

您可以将上次备份的日志文件 mtime 保存在某处,然后检查轮换日志文件和当前日志文件。如果有一个比上次存储的 mtime 更新的旋转日志文件,您可以将当前日志文件附加到旋转的日志文件,然后备份。如果只有当前日志文件较新,则只需备份它。

文件的 mtime 可以通过以下方式检索:LC_ALL=C stat logfile.log | grep '^Modify' | cut -d: -f2-或 unix 时间戳通过date "+%s" --date="$(LC_ALL=C stat logfile.log | grep '^Modify' | cut -d: -f2-)"

于 2012-10-12T13:41:25.983 回答