在 CentOS 系统中,/var/log/messages 日志的配置主要通过 rsyslog 服务来管理(CentOS 6/7/8 默认使用 rsyslog,CentOS 8 以后也可用 systemd-journald)。下面分情况说明如何配置。
systemctl status rsyslog
如果未安装:
yum install -y rsyslog
systemctl enable rsyslog
systemctl start rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf
在 /etc/rsyslog.conf 或 /etc/rsyslog.d/*.conf 中,通常会有类似配置:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
含义:
*.info:所有设施的 info 级别及以上日志mail.none:排除 mailauthpriv.none:排除认证日志cron.none:排除 cron/var/log/messages只想记录 warning 及以上:
*.warn /var/log/messages
例如只记录内核日志:
kern.* /var/log/messages
*.info;mail.none;local0.none /var/log/messages
将 messages 发送到远程日志服务器:
*.info @@192.168.1.100:514
@ UDP@@ TCPmessages 日志由 logrotate 管理。
/etc/logrotate.d/syslog
示例:
/var/log/messages {
daily
rotate 7
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
endscript
}
journalctl
编辑:
/etc/systemd/journald.conf
Storage=persistent
重启:
systemctl restart systemd-journald
systemctl status rsyslog
ls -l /var/log/messages
systemctl restart rsyslog
如果你愿意,可以告诉我:
我可以给你一份可直接使用的配置文件示例。