如何将系统日志中的内容转发到 Red Hat 中的不同位置?

如何将系统日志中的内容转发到 Red Hat 中的不同位置?

我想将 Linux Red Hat 系统日志中包含“MyAPP”的所有条目转发到此位置:

/global/temp/

我能够使用 SUSE 做到这一点,但是现在我们公司已经转换到 Red Hat,而我不知道该如何做到这一点。

对于 SUSE,系统日志位于此处:

/var/log/messages

SUSE 配置文件:

/etc/syslog-ng/syslog-ng.conf 

在 SUSE 配置文件中:

filter f_MyApp     { match('^ssh-myapp:'); };

destination MyApp { file("/global/temp/ssh-myapp.$R_YEAR$R_MONTH$R_DAY.log"); };
log { source(src); filter(f_MyApp); destination(MyApp); flags(final); };

有人知道如何在 Red Hat 中执行此操作以及要编辑哪个配置文件吗?

答案1

如果您使用的rsyslog是 RHEL,则有选项可以根据模式匹配将日志发送到不同的文件。某些版本的 RHEL 预装了 rsyslog,而较新的版本可能没有,因为 RedHat 将 Journal 推为 systemd 中的默认设置。对于仅依赖 Journal 的较新系统,您仍然可以安全地同时运行 rsyslog,如中所述/usr/share/doc/systemd/README.logs

dnf install rsyslog

以下是您可以输入的有效语法示例/etc/rsyslog.d/*.conf

if $syslogtag startswith "postfix/anvil" or $msg startswith "statistics:" then {
    -/var/log/mail/postfix_stats
    stop
}

if $programname == "dovecot" and $msg startswith "auth-worker(" then {
    -/var/log/mail/dovecot_auth
    stop
}

文档在这里:

https://www.rsyslog.com/doc/master/rainerscript/control_structures.html

https://www.rsyslog.com/doc/master/configuration/filters.html

https://www.rsyslog.com/doc/master/configuration/properties.html

相关内容