温馨提示×

Debian syslog怎么过滤

小樊
42
2026-07-19 04:01:14
栏目: 智能运维

在 Debian 系统中,syslog 的过滤方式取决于你使用的是 rsyslog(Debian 默认)还是 systemd-journald。下面分情况说明。


一、使用 rsyslog 过滤(传统方式)

1️⃣ 配置文件位置

  • 主配置:/etc/rsyslog.conf
  • 自定义规则(推荐):
    /etc/rsyslog.d/*.conf
    

2️⃣ 基本过滤语法

✅ 按 facility / priority 过滤

# 只记录 mail 的 error 及以上级别
mail.err    /var/log/mail-error.log

常见 facility:

  • auth, authpriv
  • cron
  • daemon
  • kern
  • mail
  • syslog
  • user
  • local0 ~ local7

常见 priority(从低到高):

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

✅ 按 程序名(programname) 过滤

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

或忽略:

:programname, isequal, "cron"    ~

✅ 按 主机名(hostname) 过滤

:hostname, contains, "web01"    /var/log/web01.log

✅ 按 日志内容(msg) 过滤

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

正则匹配:

:msg, regex, "failed|error|panic"    /var/log/important.log

3️⃣ 忽略某些日志

:msg, contains, "health check"    ~

或:

*.*;authpriv.none;cron.none    /var/log/syslog

4️⃣ 应用配置

sudo systemctl restart rsyslog

二、使用 journalctl 过滤(systemd)

1️⃣ 按服务过滤

journalctl -u ssh.service

2️⃣ 按优先级过滤

journalctl -p err

3️⃣ 按时间过滤

journalctl --since "2025-01-01" --until "2025-01-02"

4️⃣ 按进程/PID

journalctl _PID=1234

5️⃣ 实时查看

journalctl -f

三、常见示例

✅ 只记录 SSH 登录日志

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

✅ 忽略 cron 日志

:programname, isequal, "cron"    ~

✅ 把错误日志单独存放

*.err    /var/log/all-error.log

四、查看当前使用的 syslog

ps -ef | grep rsyslog

或:

systemctl status rsyslog

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

  • ✅ 想过滤 哪种日志
  • ✅ 要 丢弃 / 保存 / 转发
  • ✅ 是 服务器还是容器

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

0