在 Debian 系统中,syslog 通常由 rsyslog(或较新的 systemd-journald + rsyslog)负责处理。过滤 syslog 信息可以从查看时过滤和**配置时过滤(写入日志前)**两个层面来做。
journalctl(systemd 系统)Debian 默认使用 systemd:
# 按服务过滤
journalctl -u ssh.service
# 按优先级(err 及以上)
journalctl -p err
# 按时间
journalctl --since "2024-01-01" --until "2024-01-02"
# 按关键字
journalctl | grep "error"
/var/log 传统日志# 查看 syslog
grep "sshd" /var/log/syslog
# 实时过滤
tail -f /var/log/syslog | grep "error"
编辑 /etc/rsyslog.conf 或 /etc/rsyslog.d/xxx.conf:
# 只记录 sshd 的 info 以上级别
:programname, isequal, "sshd" info
或忽略某些日志:
# 忽略 cron 的 info
:programname, isequal, "cron" stop
# 只记录 err 及以上
*.err /var/log/errors.log
:hostname, contains, "web01" /var/log/web01.log
:msg, contains, "timeout" stop
修改后重启:
systemctl restart rsyslog
如果你只是想减少日志量:
/etc/logrotate.d/rsyslog
*.debug stop
*.err /var/log/errors.log
*.*;*.err /var/log/syslog
:programname, isequal, "avahi-daemon" stop
rsyslogd -N1
如果你能说明:
我可以给你更精确的配置示例。