在 Debian 系统中,syslog 的过滤方式取决于你使用的是 rsyslog(Debian 默认)还是 systemd-journald。下面分情况说明。
/etc/rsyslog.conf/etc/rsyslog.d/*.conf
# 只记录 mail 的 error 及以上级别
mail.err /var/log/mail-error.log
常见 facility:
auth, authprivcrondaemonkernmailsysloguserlocal0 ~ local7常见 priority(从低到高):
debug < info < notice < warning < err < crit < alert < emerg
:programname, isequal, "sshd" /var/log/sshd.log
& stop
或忽略:
:programname, isequal, "cron" ~
:hostname, contains, "web01" /var/log/web01.log
:msg, contains, "error" /var/log/error.log
& stop
正则匹配:
:msg, regex, "failed|error|panic" /var/log/important.log
:msg, contains, "health check" ~
或:
*.*;authpriv.none;cron.none /var/log/syslog
sudo systemctl restart rsyslog
journalctl -u ssh.service
journalctl -p err
journalctl --since "2025-01-01" --until "2025-01-02"
journalctl _PID=1234
journalctl -f
:programname, isequal, "sshd" /var/log/sshd.log
& stop
:programname, isequal, "cron" ~
*.err /var/log/all-error.log
ps -ef | grep rsyslog
或:
systemctl status rsyslog
如果你愿意,可以告诉我:
我可以帮你直接写一份可用的 rsyslog 配置。