我想将 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