如何在使用 sdwdate 时禁用 systemd 日志中的“时间已更改”垃圾邮件?

如何在使用 sdwdate 时禁用 systemd 日志中的“时间已更改”垃圾邮件?

由于结合使用了 Debian Stretch,默认使用 systemd,并且日期(使用慢速时钟调节器GH)),我的系统时钟经常改变。

结果就是journalctl -f无休无止地收到垃圾邮件。

[...]
Nov 07 13:46:49 host systemd[766]: Time has been changed
Nov 07 13:46:50 host systemd[766]: Time has been changed
Nov 07 13:46:51 host systemd[766]: Time has been changed
[...]

这在使用 sysvinit 的 Debian wheezy 上不是问题。

如何配置 systemd 不将Time has been changed消息发送到日志?

一个相关问题如何在 Debian jessie 上的 /var/log/syslog 中禁用 systemd 的“时间已更改”垃圾邮件?已经解决了,但是这个解决方案在这里不起作用。

答案1

消息来自src/core/manager.c在 systemd 源中。它被硬编码为使用 INFO 系统日志记录级别。

默认情况下,systemd 会记录具有 INFO 级别的消息,如果您可以通过更改/etc/systemd/system.conf为以下内容来更改它:

LogLevel=notice

但您也会丢失很多其他信息。

最好修补src/core/manager.c一下:

 log_struct(LOG_DEBUG,
            MESSAGE_ID(SD_MESSAGE_TIME_CHANGE),
            "MESSAGE=Time has been changed",
            NULL);

(LOG_DEBUG定义为sys/syslog.h) 中的下一个更高级别和最高级别,或注释掉整个消息。

我还没有找到一种方法来仅报告最小大小为 X 秒的计时器更改。但如果这是可能的,这无疑会导致补丁更加复杂且容易出错。

相关内容