温馨提示×

debian syslog怎样过滤

小樊
40
2026-09-20 22:56:29
栏目: 智能运维

在 Debian 里,“syslog”通常指 rsyslog(默认日志系统)。过滤方式主要取决于你想看日志时过滤,还是写日志时过滤。下面分情况说明。


一、查看已有日志时过滤(最常用)

1. 用 grep 过滤

grep "error" /var/log/syslog
grep -i "ssh" /var/log/auth.log

按时间:

grep "Aug 20 10:" /var/log/syslog

2. 用 journalctl(systemd 系统)

Debian 默认用 systemd:

journalctl | grep ssh

按服务:

journalctl -u nginx

按优先级(错误以上):

journalctl -p err

按时间:

journalctl --since "2024-08-20 10:00" --until "2024-08-20 11:00"

二、在 rsyslog 中配置过滤(写日志时过滤)

配置文件位置:

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

1. 按 facility / priority 过滤

示例:只记录 mail 的错误:

mail.err    /var/log/mail.err

丢弃某些日志:

*.debug;auth,authpriv.none   /var/log/syslog

2. 按关键字过滤(非常常用)

把包含 “test” 的日志丢弃:

:msg, contains, "test" stop

把包含 “error” 的写到单独文件:

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

3. 按程序名过滤

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

4. 按主机名 / IP

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

三、过滤并丢弃日志(减少磁盘占用)

:msg, contains, "health check" stop

修改后重启:

systemctl restart rsyslog

四、常见场景示例

只看 SSH 登录

grep "sshd" /var/log/auth.log

忽略 cron 噪音

:programname, isequal, "CRON" stop

只保留错误日志

*.err    /var/log/errors.log
*.*;*.err none

如果你能告诉我:

  • 是想查日志还是改配置
  • 程序 / 关键字 / 级别过滤
  • Debian 版本(10/11/12)

我可以给你更精确的配置示例。

0