如何为多个 systemd 服务正确设置 logrotate,将其 stdout、stderr 发送到 rsyslog

如何为多个 systemd 服务正确设置 logrotate,将其 stdout、stderr 发送到 rsyslog

假设我有许多 systemd 服务单元,ubuntu 16.04如下所示:

[Unit]
Description=Do something script
After=default.target

[Service]
ExecStart=/usr/local/sbin/some-script-x.sh
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=some-script

[Install]
WantedBy=default.target

我也像这样配置了 rsyslog:

if $programname == 'some-script-x' then /var/log/some-script-x.log

完成。服务日志写入其日志。

我想像/var/log/some-script-x.logsyslog 等默认日志文件一样进行轮换。我有一个配置原型:

/var/log/some-script-x.log
{
        rotate 30
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                invoke-rc.d rsyslog rotate > /dev/null
        endscript
}

但是系统已经有一个/etc/logrotate.d/rsyslog包含以下内容的文件invoke-rc.d rsyslog rotate > /dev/null

在此配置情况下,对 syslog 服务器有多次轮换调用。这让我很担心。如何告诉 rsyslog 我只想轮换特定的服务日志。或者如何正确设置轮换,而无需额外的调用?

相关内容