在 CentOS 中“替换日志路径”通常有以下几种常见场景,我分别说明,你可以按需选择。
CentOS 默认使用 rsyslog 管理日志。
编辑配置文件:
vi /etc/rsyslog.conf
或自定义配置:
vi /etc/rsyslog.d/custom.conf
例如,把 /var/log/messages 改到新路径:
# 原配置
# *.info;mail.none;authpriv.none;cron.none /var/log/messages
# 新配置
*.info;mail.none;authpriv.none;cron.none /data/logs/messages
mkdir -p /data/logs
chown syslog:adm /data/logs
chmod 755 /data/logs
systemctl restart rsyslog
编辑配置文件:
vi /etc/nginx/nginx.conf
修改:
error_log /data/logs/nginx/error.log;
access_log /data/logs/nginx/access.log;
创建目录:
mkdir -p /data/logs/nginx
chown nginx:nginx /data/logs/nginx
重启:
systemctl restart nginx
如果你不想改配置文件,可以用软链接“替换路径”:
# 停止服务
systemctl stop rsyslog
# 移动原日志
mv /var/log/messages /data/logs/messages
# 创建软链接
ln -s /data/logs/messages /var/log/messages
# 启动服务
systemctl start rsyslog
⚠️ 注意:部分服务(如 SELinux 开启时)可能拒绝写软链接。
CentOS 7+ 默认有 journalctl 日志。
vi /etc/systemd/journald.conf
修改:
Storage=persistent
# 默认路径 /var/log/journal
mkdir -p /data/log/journal
rm -rf /var/log/journal
ln -s /data/log/journal /var/log/journal
重启:
systemctl restart systemd-journald
如果你改了日志路径,也要同步修改:
vi /etc/logrotate.d/rsyslog
把旧路径替换为新路径,然后测试:
logrotate -d /etc/logrotate.conf
如果启用了 SELinux,新路径需要打标签:
semanage fcontext -a -t var_log_t "/data/logs(/.*)?"
restorecon -Rv /data/logs
查看状态:
getenforce
| 场景 | 方法 |
|---|---|
| 系统日志 | 改 rsyslog |
| 应用日志 | 改服务配置 |
| 快速替换 | 软链接 |
| systemd | journald + 软链 |
| 安全 | 注意 SELinux |
如果你能告诉我 具体是哪个日志(messages / nginx / docker / 自定义程序),我可以给你精确命令。