如何防止模块用无用的输出淹没我的内核日志?

如何防止模块用无用的输出淹没我的内核日志?

我正在使用该atmel_mxt_ts模块,它会用每秒大约 10 条无用的状态消息淹没我的内核日志。我担心这会使我的日志变得庞大并导致对 SSD 进行不必要的写入。有没有什么办法可以让这个模块的输出静音,或者至少让 systemd 日志忽略它?

例子:

Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08 
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08 

答案1

如果您正在使用,syslog-ng则可以使用该filter指令:

filter demo_filter { not match ("atmel_mxt_ts i2c-ATML0000:01: Status: 08"); };

有关过滤的更多详细信息,请syslog-ng参阅https://www.balabit.com/sites/default/files/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html-single/index.html#filters

如果您正在使用,rsyslog您可以使用例如基于属性的过滤器:

:msg, !contains, "atmel_mxt_ts i2c-ATML0000:01: Status: 08"

有关过滤的更多详细信息,请rsyslog参阅http://www.rsyslog.com/doc/rsyslog_conf_filter.html

为了扩大答案并对给定的评论做出反应:

版本 216 之前的 systemd 日志默认将消息转发到 syslog,从版本 216 开始,消息不再转发,因为 rsyslog 或 syslog-ng(从版本 3.6 开始)将从日志本身提取消息(请参阅https://wiki.archlinux.org/index.php/Systemd/Journal#Journald_in_conjunction_with_syslog)。

此外,journald.confStorage=指令默认设置为auto,表示仅当目录 /var/log/journal 存在时日志才是持久的(请参阅man journald.conf.

因此,通过过滤系统日志,您应该能够防止对 SSD 进行不需要的写入,除非您有持久的日志日志。在这种情况下,您还需要将Storage=指令设置为noneor volatile

相关内容