在日常运维中,日志文件的管理是至关重要的一环。随着时间的推移,日志文件可能会占用大量磁盘空间,影响系统的性能和可用性。logrotate 是一个强大的工具,能够自动轮转、压缩、删除和邮件发送日志文件。本文将介绍 logrotate 的基本用法及最佳实践。

1. 什么是 logrotate

logrotate 是一个日志文件管理工具,通常预装在大多数 Linux 发行版中。它允许用户配置日志文件的轮转策略,包括保留的文件数量、轮转频率以及文件压缩等。

2. 安装 logrotate

在大多数 Linux 系统上,logrotate 默认已安装。你可以通过以下命令确认其安装状态:

logrotate --version

如果未安装,可以使用以下命令进行安装:

  • Debian/Ubuntu
    sudo apt-get install logrotate
    
  • CentOS/RHEL
    sudo yum install logrotate
    

3. 基本配置

logrotate 的配置文件通常位于 /etc/logrotate.conf,而每个服务的具体配置文件通常位于 /etc/logrotate.d/ 目录中。

3.1 主配置文件示例

# /etc/logrotate.conf

# 每天轮转
daily

# 保留 7 个轮转文件
rotate 7

# 邮件通知
mail root

# 忽略空文件
notifempty

# 轮转后压缩文件
compress

3.2 服务特定配置示例

下面是一个针对 Tomcat 日志的 logrotate 配置示例:

# /etc/logrotate.d/tomcat

/usr/local/apache-tomcat-8.5.99/logs/*.log {
    daily                 # 每天轮转
    missingok             # 如果日志文件不存在则跳过
    rotate 7              # 保留最近7个日志文件
    compress              # 压缩轮转后的日志文件
    delaycompress         # 推迟压缩上一次的日志
    notifempty            # 如果日志为空则不进行轮转
    copytruncate          # 在复制日志后截断日志
}

4. 手动执行 logrotate

在修改配置文件后,可以手动执行 logrotate 进行测试:

sudo logrotate -d /etc/logrotate.d/tomcat

-d 参数用于调试,检查配置而不实际执行。

强制轮转

如果你希望强制轮转日志,可以使用:

sudo logrotate -f /etc/logrotate.d/tomcat

5. 检查状态

轮转后的状态文件通常位于 /var/lib/logrotate/status。你可以查看这个文件以确认哪些日志已被轮转。

cat /var/lib/logrotate/status

6. 常见问题

6.1 日志没有轮转

如果日志文件未按预期轮转,可能的原因包括:

  • 日志文件没有更新或达到轮转条件。
  • logrotate 状态文件中的信息不准确。

6.2 日志文件位置

默认情况下,轮转后的日志文件仍保存在原来的目录中。你可以通过 olddir 选项将其移动到其他目录。

olddir /var/log/tomcat/old

7. 总结

使用 logrotate 可以有效管理日志文件,避免因日志积累而导致的磁盘空间不足。通过合理配置 logrotate,能够确保系统高效运行并保持良好的日志管理习惯。