在 Debian 系统中,过滤 syslog 通常取决于你使用的是 传统 rsyslog 还是 systemd-journald。下面按常见场景分别说明。
Debian 默认通常使用 rsyslog 作为 syslog 守护进程。
ls /etc/rsyslog.d/
通常会有:
/etc/rsyslog.conf/etc/rsyslog.d/*.conf例如:只记录 sshd 的日志
sudo nano /etc/rsyslog.d/10-sshd.conf
内容示例:
:programname, isequal, "sshd" /var/log/sshd.log
& stop
说明:
:programname:按程序名过滤isequal:完全匹配& stop:匹配后不再继续处理重启 rsyslog:
sudo systemctl restart rsyslog
例如:只记录 warning 及以上 的日志
*.warning /var/log/warning.log
常见级别(从低到高):
debug
info
notice
warning
err
crit
alert
emerg
:hostname, contains, "server01" /var/log/server01.log
& stop
例如:排除 cron 日志
:programname, isequal, "cron" ~
或(新版 rsyslog):
if ($programname == "cron") then stop
Debian 8+ 基本都使用 systemd。
journalctl -u ssh.service
实时查看:
journalctl -u ssh.service -f
journalctl --since "2026-01-20 10:00" --until "2026-01-20 12:00"
最近 1 小时:
journalctl --since "1 hour ago"
journalctl -p warning
journalctl _COMM=sshd
journalctl > all.log
grep sshd all.log
如果日志仍在 /var/log/syslog:
grep sshd /var/log/syslog
实时过滤:
tail -f /var/log/syslog | grep sshd
*.err /var/log/error.log
:programname, isequal, "some-service" ~
:programname, isequal, "nginx" /var/log/nginx.log
:programname, isequal, "mysql" /var/log/mysql.log
测试配置文件:
rsyslogd -N1
如果你能说明:
cat /etc/debian_version)我可以给你一份完全可直接用的配置文件。