我目前正在开发一个创建大量大型日志文件的应用程序。因此,为了管理这些,我想在午夜重新启动应用程序,压缩它留下的日志文件,并使用当前日期启动一个新的日志文件,因此日志文件夹可能如下所示:
latest.log
2022-10-22_00:00:00.log.tar.gz
2022-10-21_00:00:00.log.tar.gz
2022-10-20_00:00:00.log.tar.gz
2022-10-19_00:00:00.log.tar.gz
PM2 承诺能够使用这个模块来做到这一点:
https://www.npmjs.com/package/pm2-logrotate 但它似乎有一个令人讨厌的名声: https://stackoverflow.com/a/71852170/2741831
于是我准备放弃的时候发现pm2有一个原生函数,容易混淆也叫logrotate:
https://pm2.keymetrics.io/docs/usage/log-management/#Setting%20up%20a%20native%20logrotate 本机 logrotate 部分
生成如下所示的配置文件:
/home/user/.pm2/pm2.log /home/user/.pm2/logs/*.log {
rotate 12
weekly
missingok
notifempty
compress
delaycompress
create 0640 user user
}
这在任何地方都没有记录,所以我不知道它是什么或它是如何工作的,尽管它似乎能够压缩日志文件,这很好。 它甚至没有说我是否必须为它设置一个 crontab。
所以这是我的问题:
显然,这个命令所做的只是为 Redhat logrotate 实用程序生成一个配置文件。所以我想就用那个
正如@user2741831 所说,它使用您的 linux 系统的本机 logrotate。
- 第一行表示块内的指令适用于 /home/user/.pm2/logs/*.log 中的所有日志:
- weekly 表示该工具将尝试每周轮换日志。其他可能的值是每小时、每天和每月。
- rotate 12 表示只保留 12 个旋转日志。因此,最旧的文件将在第四次后续运行中被删除。
- missingok 如果日志文件丢失,继续下一个而不发出错误消息。
- compress 和 delaycompress 用于告诉所有旋转的日志,除了最近的日志,都应该被压缩。
你可以在这个 link 上找到 Debian 的一些解释