温馨提示×

如何过滤ubuntu syslog

小樊
41
2026-07-05 18:16:04
栏目: 智能运维

在 Ubuntu 中,syslog 过滤通常可以从 rsyslog 规则、journalctl、日志级别、程序来源、关键字 等几个层面来做。下面按常见场景给你一套实用指南。


一、使用 rsyslog 过滤 syslog(最常用)

Ubuntu 多数版本默认使用 rsyslog

1️⃣ rsyslog 配置文件位置

/etc/rsyslog.conf
/etc/rsyslog.d/*.conf

建议:
新建规则文件,不要直接改主配置

sudo vim /etc/rsyslog.d/10-filter.conf

2️⃣ 按程序(facility)过滤

示例:只记录 ssh 日志

:programname, isequal, "sshd" /var/log/sshd.log
& stop

示例:丢弃 cron 日志

:programname, isequal, "cron" ~

3️⃣ 按日志级别过滤

只记录 warning 及以上

*.warning    /var/log/warning.log

排除 debug 日志

*.debug   ~

常见级别(低 → 高):

debug < info < notice < warning < err < crit < alert < emerg

4️⃣ 按关键字过滤

包含某关键字

:msg, contains, "error"    /var/log/error.log

不包含某关键字

:msg, !contains, "test"    /var/log/syslog

5️⃣ 按 IP / 主机过滤

:hostname, isequal, "server1" /var/log/server1.log

6️⃣ 重启 rsyslog

sudo systemctl restart rsyslog

二、使用 journalctl 过滤(systemd 系统)

Ubuntu 16.04+ 默认使用 systemd-journal。

1️⃣ 按服务过滤

journalctl -u ssh
journalctl -u nginx

2️⃣ 按时间过滤

journalctl --since "2025-01-01" --until "2025-01-02"
journalctl --since "1 hour ago"

3️⃣ 按优先级过滤

journalctl -p err
journalctl -p warning

4️⃣ 按关键字过滤

journalctl | grep "error"

5️⃣ 实时查看

journalctl -f

三、过滤 /var/log/syslog 实时输出

1️⃣ 使用 grep

tail -f /var/log/syslog | grep sshd

2️⃣ 排除某些内容

tail -f /var/log/syslog | grep -v cron

四、常见实用示例

✅ 只保留错误日志

*.err    /var/log/error.log
*.*;*.err ~

✅ 为某个程序单独建日志

:programname, isequal, "docker" /var/log/docker.log
& stop

✅ 禁止某程序写 syslog

:programname, isequal, "myapp" ~

五、调试 rsyslog 规则

查看 rsyslog 是否加载规则:

rsyslogd -N1

开启调试(临时):

sudo rsyslogd -dn

六、总结(快速选择)

需求 推荐方式
永久过滤 rsyslog 规则
临时查看 journalctl / grep
按服务 journalctl -u
按级别 rsyslog / journalctl -p
实时 tail -f / journalctl -f

如果你愿意,可以告诉我:

  • ✅ Ubuntu 版本
  • ✅ 想过滤哪种日志(sshd / docker / kernel / 自定义程序)
  • ✅ 是想 丢弃 还是 单独保存

我可以直接帮你写一份 可用的 rsyslog 配置

0