在 Linux 里,“syslog 过滤”通常可以从 三个层面 来做,取决于你想过滤什么、在哪里过滤:
# 只记录 mail 的 error 以上
mail.err /var/log/mail.err
# 忽略 cron 的 info
cron.info ~
:programname, isequal, "sshd" /var/log/sshd.log
:msg, contains, "error" /var/log/error.log
:msg, contains, "heartbeat" stop
修改后:
sudo systemctl restart rsyslog
filter f_ssh { program("sshd"); };
destination d_ssh { file("/var/log/ssh.log"); };
log { source(s_src); filter(f_ssh); destination(d_ssh); };
journalctl -u nginx
journalctl -p err
journalctl --since "10 min ago"
journalctl | grep ssh
tail -f /var/log/syslog | grep ssh
grep "authentication failure" /var/log/auth.log
✅ 只保留错误日志
*.err /var/log/errors.log
✅ 屏蔽某程序日志
:programname, isequal, "dockerd" stop
✅ 不同服务写不同文件
local0.* /var/log/app.log
如果你能说清楚:
我可以给你一份可直接用的配置。