在 Linux 中,syslog 通常指系统日志服务(如 rsyslog、syslog-ng 或 systemd-journald)。“过滤 syslog”可以从查看/检索日志和配置日志过滤规则两个层面来理解。下面分别说明。
journalctl(systemd 系统,最常见)# 按服务过滤
journalctl -u nginx.service
# 按时间
journalctl --since "2024-01-01 00:00:00" --until "2024-01-02"
# 按优先级(err 及以上)
journalctl -p err
# 按关键字
journalctl | grep "error"
# 实时跟踪
journalctl -f -u sshd
# 常见日志位置
/var/log/messages
/var/log/syslog
/var/log/secure
# 过滤示例
grep "sshd" /var/log/auth.log
grep -i "error" /var/log/syslog
tail -f /var/log/messages | grep "kernel"
awk / sed 高级过滤# 只看某 IP 的日志
awk '/192.168.1.10/' /var/log/syslog
# 提取时间和主机
awk '{print $1, $2, $3, $5}' /var/log/syslog
配置文件:/etc/rsyslog.conf 或 /etc/rsyslog.d/*.conf
# 丢弃来自某程序的日志
:programname, equals, "cron" stop
# 只记录 error 及以上
*.err /var/log/errors.log
# 按主机/IP 过滤(远程日志)
if ($fromhost-ip == '192.168.1.100') then {
action(type="omfile" file="/var/log/host100.log")
stop
}
重新加载:
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 / grepstop 规则auth.log如果你能说明:
我可以给你更精确的配置示例。