在 CentOS 系统中,过滤 messages 日志信息 常见有几种方式,取决于你是想实时查看、按条件过滤,还是长期过滤/丢弃某些日志。下面按常用场景给你说明。
grep 过滤关键字grep "error" /var/log/messages
忽略大小写:
grep -i "error" /var/log/messages
过滤多个关键字:
grep -E "error|fail|timeout" /var/log/messages
tail -f /var/log/messages | grep "sshd"
只看 ssh 登录日志:
tail -f /var/log/messages | grep "sshd"
查看某一天的日志:
grep "Aug 20" /var/log/messages
CentOS 7 以后很多日志由 systemd-journald 管理。
journalctl
journalctl -u sshd
journalctl -p err
优先级说明:
0 emerg
1 alert
2 crit
3 err
4 warning
5 notice
6 info
7 debug
journalctl -f
journalctl --since "2025-01-01" --until "2025-01-02"
如果你是想 不让某些日志写入 /var/log/messages:
vim /etc/rsyslog.conf
或新建:
vim /etc/rsyslog.d/ignore.conf
cron.* ~
或(新版本 rsyslog):
:programname, isequal, "cron" stop
:msg, contains, "testlog" stop
systemctl restart rsyslog
⚠️ 注意:顺序很重要,stop 要放在规则前面。
把不同服务日志写到不同文件,而不是全部进 messages:
if $programname == 'nginx' then /var/log/nginx.log
& stop
| 需求 | 推荐方式 |
|---|---|
| 临时查看 | grep / tail -f |
| systemd 服务 | journalctl |
| 长期丢弃 | rsyslog 规则 |
| 实时分析 | journalctl -f |
如果你能具体说一下:
我可以给你一条最合适、可直接用的配置。