温馨提示×

如何轮转debian syslog文件

小樊
46
2026-10-17 07:52:28
栏目: 智能运维

在 Debian 系统中,轮转(rotate)syslog 文件通常是通过 logrotate 工具来完成的。下面分几种常见情况说明。


一、Debian 默认情况(rsyslog + logrotate)

Debian 默认使用 rsyslog,并由 logrotate 自动管理日志轮转。

1. 查看 syslog 的 logrotate 配置

cat /etc/logrotate.d/rsyslog

典型内容示例:

/var/log/syslog
{
    rotate 4
    weekly
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

说明:

  • rotate 4:保留 4 个旧日志
  • weekly:每周轮转
  • compress:压缩旧日志
  • postrotate:通知 rsyslog 重新打开日志文件

2. 手动测试 logrotate(不真正执行)

logrotate -d /etc/logrotate.d/rsyslog

3. 手动立即轮转 syslog

logrotate -f /etc/logrotate.d/rsyslog

二、如果你用的是 systemd-journald(非 syslog 文件)

Debian 也支持 journald,日志不写在 /var/log/syslog。

查看日志:

journalctl

轮转 journal 日志:

journalctl --rotate

限制日志大小(编辑 /etc/systemd/journald.conf):

SystemMaxUse=500M
MaxRetentionSec=2week

然后重启:

systemctl restart systemd-journald

三、自定义 syslog 轮转规则(示例)

如果你有自定义日志,比如 /var/log/myapp.log:

创建:

sudo nano /etc/logrotate.d/myapp

内容:

/var/log/myapp.log
{
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

说明:

  • copytruncate:不重启服务,直接截断原文件(适合不支持信号重启的进程)

四、常见问题

1. syslog 不轮转?

检查:

ls -l /var/log/syslog*
systemctl status logrotate

2. 日志太大?

  • 调整 rotate / size
  • 或使用:
size 100M

总结

✅ Debian 中 syslog 轮转标准方案:

  • 使用 logrotate
  • 配置文件在 /etc/logrotate.d/rsyslog
  • 通过 postrotate 通知 rsyslog

如果你能说明:

  • 用的是 rsyslog / syslog-ng / journald
  • 是否是 容器 / 嵌入式系统

我可以给你更精确的配置示例。

0 踩