在Linux 7.X 中,可以使用rsyslog日志守护进程来过滤日志消息。
1.常见的过滤条件示例
示例1:按日志级别过滤
① 查看系统默认值
# cat /etc/rsyslog.conf
...省略若干内容...
*.info;mail.none;authpriv.none;cron.none /var/log/messages
...省略若干内容...
② 只显示某个级别以上到messages
a. 若要仅显示警告warn级别及以上的日志消息
# cat /etc/rsyslog.conf
...省略若干内容...
*.warn /var/log/messages
...省略若干内容...
b. 若要仅显示错误err级别的日志消息
# cat /etc/rsyslog.conf
...省略若干内容...
*.err /var/log/messages
...省略若干内容...
示例2:按日志来源过滤
① 打印仅显示特定程序(如sshd)生成的日志消息到messages
# cat /etc/rsyslog.conf
...省略若干内容...
if $programname == 'sshd' then /var/log/sshd.log
...省略若干内容...
② 不打印sshd服务和online_doc服务的日志到messages
# cat /etc/rsyslog.conf
...省略若干内容...
if $programname == 'sshd' then stop
if $programname == 'online_doc' then stop
*.info;mail.none;authpriv.none;cron.none /var/log/messages
...省略若干内容...
示例3:按文本内容过滤
① 打印仅显示包含特定文本内容"如: ERROR "的日志到messages
# cat /etc/rsyslog.conf
...省略若干内容...
if $msg contains 'ERROR' then /var/log/error.log
...省略若干内容...
② 不打印包含特定文本内容 '如:sshd和online_doc' 的日志到messages
# cat /etc/rsyslog.conf
...省略若干内容...
if $msg contains 'sshd' then stop
if $msg contains 'online_doc' then stop
*.info;mail.none;authpriv.none;cron.none /var/log/messages
...省略若干内容...
示例4:按设备过滤
①若要仅显示特定网络存储设备(如/dev/sda)生成的日志消息,可以使用
# cat /etc/rsyslog.conf
...省略若干内容...
if $fromhost-ip == '192.168.1.100' then /var/log/sda.log
...省略若干内容...
2.重启rsyslog服务生效
设置完成后,重启服务生效
# systemctl restart rsyslog.service
查看日志是否生效
# tail -f /var/log/messages