默认情况下,宝塔的 WEB 软件记录日志时,不会按日期将日志储存到不同的文件里,长时间的日志都记录到一个文件里,很不方便查阅和管理。

一、安装 logrotate

大多 Linux 系统一般都自带 logrotate,如果刚好你的系统没有自带,可以在github下载源代码进行编译安装。

或者直接尝试用命令进行安装,例如:

  • 红帽系统(Red Hat):yum install logrotatednf install logrotate
  • 乌班图(Ubuntu):sudo apt-get install logrotateapt install logrotate

二、原理

其实“切割”二字并不对,具体我们来简单说说个人理解的工作原理。
1.logrotate 执行时,会对符合配置里设定的条件的文件进行处理。
2.然后重命名日志文件,并创建新的日志文件。
3.执行其它操作,如:压缩文件。

三、配置

新建并编辑配置文件

sudo vim /etc/logrotate.d/btweblogs

配置内容

/www/wwwlogs/*.log  {
    # 间隔时间:daily=每天/weekly=每周/monthly=每月/yearly=每年
    daily
    # 保留份数,超过该数量的旧日志自动删除
    rotate 14
    # 忽略错误,如:文件不存在
    missingok
    # 使用日期格式重命名文件
    dateext
    # 对分离出来的文件进行压缩
    compress
    # 不压缩本次分离出来的文件
    delaycompress
    # 忽略空文件(即不分离空的文件)
    notifempty
    # 多个文件分离后只执行一次脚本
    sharedscripts
    # 文件分离后执行的脚本
    postrotate
        # 通知Nginx和Apache程序重载
        # Nginx
    [ -e /www/server/nginx/logs/nginx.pid ] && kill -USR1 `cat /www/server/nginx/logs/nginx.pid`
        # Apache
    [ -e /www/server/apache/logs/httpd.pid ] && kill -USR1 `cat /www/server/apache/logs/httpd.pid`
    endscript
}

四、结束

logrotate 除了可以分离压缩文件,还可以将分离出来的文件通过邮件发送到指定邮箱,具体方法可以查阅 logrotate 的手册

宝塔本身也有日志切割功能,如果没有压缩之类的需求,可以使用宝塔的功能。

标签: logrotate

已有 2 条评论

  1. 我用宝塔定时任务执行shell脚本实现的“日志切割”

    1. jwj jwj

      我研究完 logrotate 才发现宝塔有自带

添加新评论