如何使用 systemd 进行 logrotate?

如何使用 systemd 进行 logrotate?

我正在使用 systemd 和单元文件运行一个节点应用程序。可以使用查看应用程序日志,journalctl -u example.com但日志在某个时候会被切断,从而删除历史记录(我需要它来进行调试)。

如何使用 systemd 配置日志轮换,以便将我的应用程序日志存储在等中example.com.log.1example.com.log.2以便我可以查询我的应用程序的历史记录?

这是我的单位文件:

ExecStart=/usr/bin/node keystone.js
#Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=example.com
User=user
Group=user
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

答案1

增加存储

SystemMaxUse如果要存储到磁盘,可以通过更改和/或来增加使用的空间量SystemKeepFree。拥有更多空间将允许存储更多条目。

默认情况下,最大使用限制(SystemMaxUse)为文件系统的 10%,最小可用空间(SystemKeepFree)值为 15% - 尽管它们都限制为 4G。

轴颈旋转

当日志达到该值时,日志应自动轮换SystemMaxFileSize,日志数量由 控制SystemMaxFiles。如果您喜欢基于时间的轮换,您可以设置MaxFileSec来设置单个日志中存储条目的最大时间。

存储位置/类型说明

使用 journald,您可以选择将日志条目存储在内存 ( Storage=volatile) 或磁盘 ( Storage=persistent) 中。以上假设您将日志存储在磁盘上 - 如果不是这种情况,则需要将上述变量中​​的“System”替换为“Runtime”。

更多详细信息请参阅man journald.conf

替代方案——传递日记帐分录

如果您已经熟悉传统的 SYSLOG 守护进程,您可以通过设置选项ForwardToSyslog(立即转发消息)来传递日志事件,或者让 syslog 守护进程像日志客户端一样运行并自行获取日志。

相关内容