如何在 Linux 中使用 rsyslog 将特定日志消息重定向到单独的日志文件

从 Red Hat Enterprise Linux 7 开始,已经从传统的 syslog 迁移到 rsyslog,因此在 syslog 的工作方式方面有多个语法更改。

假设我的 syslog 文件满了。
但是包含很多我不需要保留的日志消息,
那么我想把这些不重要的日志单独保存在单独的文件,以便 syslog 仅包含日常使用的重要消息,并避免频繁的日志轮换 syslog。

下面是操作示例

假设syslog中有很多下面这样的日志:

Jun 27 08:10:01 Ban17-inst01-a systemd: Started Session 2218 of user root.
Jun 27 08:10:01 Ban17-inst01-a systemd: Starting Session 2218 of user root.
Jun 27 08:10:01 Ban17-inst01-a systemd: Started Session 2219 of user root.

我们想要将所有这些日志消息重定向到一个单独的文件。

在 /etc/rsyslog.d 中创建单独的配置文件

注意:默认情况下,/etc/rsyslog.d 中的所有配置文件都被 rsyslog.conf 考虑
我们可以通过在 /etc/rsyslog.conf 中查找此条目来验证这一点

# Include all config files in /etc/rsyslog.d/
$IncludeConfig   /etc/rsyslog.d/*

所以我们创建一个文件

# touch /etc/rsyslog.d/rsyslog_loginauth.conf

# vim /etc/rsyslog.d/rsyslog_loginauth.conf
if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting user-") then /var/log/login_auth
& stop

重启rsyslog服务

# systemctl restart rsyslog

通过与节点建立新的 ssh 连接来验证新更改,所有这些日志消息都将重定向到 /var/log/login_auth 而不是 /var/log/messages

日期:2020-06-02 22:17:03 来源:oir作者:oir