rsyslog 配置无需重启

rsyslog 配置无需重启

我的日志记录有问题。根据下面的配置,如果我想将应用程序日志文件保存在 /var/log 中,则必须执行 rsyslog restart。另外,我必须重新启动 rsyslog 以防止日志轮换。 rsyslog 和 systemd 服务的正确配置是什么以避免 rsyslog 重新启动?

我的配置:/etc/rsyslog.d/myapp.conf

if $programname == 'myapp' then {
    /var/log/myapp/myapp.log
    stop
}

/etc/systemd/system/myapp.service

[Unit]
Description=myapp

[Service]
User=myapp
ExecStart=/usr/bin/myapp
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp

[Install]
WantedBy=multi-user.target

/etc/logrotate.d/myapp.conf

/var/log/myapp/myapp.log {
  rotate 7
  daily
  size 100MB
  compress
  missingok
  notifempty
  postrotate
    sudo systemctl restart rsyslog.service
  endscript
}

答案1

您应该能够告诉 rsyslogd 重新打开日志文件,如下所示:

/usr/bin/systemctl kill -s HUP rsyslog.service 

我还没有找到如何让它重新加载配置,大多数点击都说你需要重新启动它才能应用新配置。

我发现这个服务器故障问题链接了它的信息不可能:
https://serverfault.com/q/1053728/343786

这些帖子讲述了一些关于为什么这不可能:
https://rainer.gerhards.net/2008/10/new-rsyslog-hup-processing.html
https://github.com/rsyslog/rsyslog/issues/3759

后者参考 RELP,可用于避免重启期间丢失日志消息,请参阅:
https://en.wikipedia.org/wiki/Reliable_Event_Logging_Protocol

相关内容