CentOS 日志记录配置实操指南
一 核心组件与关键路径
二 配置 rsyslog 本地分类与远程转发
# /etc/rsyslog.d/httpd.conf
if $programname == 'httpd' and $syslogseverity <= 'err' then /var/log/httpd/httpd_errors.log
& stop
# /etc/rsyslog.d/app.conf
local0.* /var/log/myapp.log
应用侧可用 logger 写入:logger -p local0.info "order created, id=10086"
*.* @remote-log-server:514*.* @@remote-log-server:514$template IpTemplate,"/var/log/%FROMHOST-IP%.log"
*.* ?IpTemplate
& ~
sudo systemctl restart rsyslog
$MaxMessageSize 32k
客户端与服务端需一致设置。三 配置 systemd-journald 与持久化
sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald
journalctl -n 50
journalctl --since "2026-01-10 00:00:00" --until "2026-01-10 12:00:00"
journalctl -p err
journalctl -u nginx.service
journalctl _PID=1234
提示:journald 日志默认按配置保留与轮转,必要时结合 rsyslog 做长期落盘与索引。四 配置 logrotate 日志轮转
# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 nginx adm
sharedscripts
postrotate
if [ -f /run/nginx.pid ]; then
kill -USR1 `cat /run/nginx.pid 2>/dev/null` || true
fi
endscript
}
# /etc/logrotate.d/myapp
/var/log/myapp/*.log {
size 100M
rotate 5
missingok
notifempty
compress
create 0644 myapp myapp
}
sudo logrotate -d /etc/logrotate.d/nginx # 预演
sudo logrotate -vf /etc/logrotate.d/nginx # 强制立即执行
如需自定义执行频率,可在 /etc/cron.d/ 下放置自定义脚本定时调用 logrotate。五 安全与运维要点
logger 进行连通性与规则验证:logger -p local0.info "test from $(hostname)"。systemctl status rsyslog、systemctl status systemd-journald;tail -f /var/log/messages、journalctl -f;logrotate -d/-vf 预演与强制执行。