在 Ubuntu 中,syslog 过滤通常可以从 rsyslog 规则、journalctl、日志级别、程序来源、关键字 等几个层面来做。下面按常见场景给你一套实用指南。
rsyslog 过滤 syslog(最常用)Ubuntu 多数版本默认使用 rsyslog。
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf
建议:
✅ 新建规则文件,不要直接改主配置
sudo vim /etc/rsyslog.d/10-filter.conf
:programname, isequal, "sshd" /var/log/sshd.log
& stop
:programname, isequal, "cron" ~
*.warning /var/log/warning.log
*.debug ~
常见级别(低 → 高):
debug < info < notice < warning < err < crit < alert < emerg
:msg, contains, "error" /var/log/error.log
:msg, !contains, "test" /var/log/syslog
:hostname, isequal, "server1" /var/log/server1.log
sudo systemctl restart rsyslog
journalctl 过滤(systemd 系统)Ubuntu 16.04+ 默认使用 systemd-journal。
journalctl -u ssh
journalctl -u nginx
journalctl --since "2025-01-01" --until "2025-01-02"
journalctl --since "1 hour ago"
journalctl -p err
journalctl -p warning
journalctl | grep "error"
journalctl -f
/var/log/syslog 实时输出tail -f /var/log/syslog | grep sshd
tail -f /var/log/syslog | grep -v cron
*.err /var/log/error.log
*.*;*.err ~
:programname, isequal, "docker" /var/log/docker.log
& stop
:programname, isequal, "myapp" ~
查看 rsyslog 是否加载规则:
rsyslogd -N1
开启调试(临时):
sudo rsyslogd -dn
| 需求 | 推荐方式 |
|---|---|
| 永久过滤 | rsyslog 规则 |
| 临时查看 | journalctl / grep |
| 按服务 | journalctl -u |
| 按级别 | rsyslog / journalctl -p |
| 实时 | tail -f / journalctl -f |
如果你愿意,可以告诉我:
我可以直接帮你写一份 可用的 rsyslog 配置。