• logrotate+crond日志切割、轮询


    logrotate

    在工作中经常会有需求去查看日志,无论是通过应用或者系统error日志去查找问题或者通过nginx的访问日志统计站点日均PV、UV。所以体现了日志的重要性,但是通常当业务越来越大的时候各项目产生的日志将会是个很大的数字,尤其是我们会需要查找往期的日志,这时候就需要对日志进行合理的备份保留。随着时间的累计,一个日志文件将会变得很大,我们通过命令去查找需要的日志段的时候就会显得非常困难,所以我们需要读各类日志进行切割轮询处理。

    logrotate是系统自带的日志切割工具,它配合crond和shell脚本可以实现对日志的切割轮询。以下将介绍如何使用logrotate。

    1、查看本机logrotate

    [root@iZ28ed866qmZ data]# which logrotate
    /usr/sbin/logrotate

    2、在任意目录下创建logrotate执行文件

    [root@iZ28ed866qmZ data]# mkdir logrotate
    [root@iZ28ed866qmZ logrotate]# vim tomcat_log1.conf

      /workspace/service_platform/apache-tomcat-7.0.69-jd1/logs/catalina.out{ #产生日志的路径
           copytruncate
           daily
           dateext
           missingok

      }

    3、logrotate参数详解

    daily: 指定转储周期为每天
    weekly: 指定转储周期为每周

    monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’

    rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除

    compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩

    missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误

    notifempty: 如果日志文件为空,轮循不会进行

    create 644 root root:以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件

    dateext: 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期

    compress: 通过gzip 压缩转储旧的日志

    delaycompress: 当前转储的日志文件到下一次转储时才压缩

    notifempty: 如果日志文件为空,不执行切割

    sharedscripts: 只为整个日志组运行一次的脚本

    postrotate/endscript: 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

    size:  size当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem)

    3、通过crond定时执行

    [root@iZ28ed866qmZ logrotate]# crontab -l
    ##tomcat log##
    59 23 * * * /usr/sbin/logrotate -f /data/logrotate/tomcat_log1.conf

    4、通过脚本备份按期清理

    [root@iZ28ed866qmZ scripts]# cat log1_polling.sh 
    #!/bin/sh
    
    logs_path="/workspace/service_platform/apache-tomcat-7.0.69-jd1/logs"
    c_log=catalina.out
    a_log=localhost_access_log
    find $logs_path -name "catalina.*-*-*.log" -exec rm -rf {} ;
    for i in $(seq 1 );
    do
            dates=`date +"%Y%m%d" -d "-${i}day"`
            dates2=`date +"%Y-%m-%d" -d "-${i}day"`
            cd $logs_path
            tar zcf $a_log.$dates.tar.gz  $a_log.$dates2.txt 
            tar zcf $c_log.$dates.tar.gz  $c_log-$dates
              sleep 30
              wait
              find $logs_path -mtime +7 -name "localhost_access_log.*.txt" -exec rm -rf {} ;
              find $logs_path -mtime +7 -name "catalina.out-*.log" -exec rm -rf {} ;
    
    done
    
    find $logs_path -mtime +7 -name "localhost_access_log.*.tar.gz" -exec rm -rf {} ;
    find $logs_path -mtime +30 -name "catalina.*.tar.gz" -exec rm -rf {} ;

    5、加入定时任务

    [root@iZ28ed866qmZ scripts]# crontab -l
    00 00 * * * /bin/sh /data/scripts/log1_polling.sh
  • 相关阅读:
    1010 幂次方
    1316 丢瓶盖
    1182 数列分段2
    Mysql动态SQL语句标签
    知了CMS开发说明文档(ibeetl) 建站系统文档
    BeanUtils.populate()的用法
    如何将网页的title前面的图标替换成自己公司的图标
    HTTP、HTTPS常用的默认端口号
    项目的xml文件中经常使用的sql语句
    Invalid bound statement(not found): com.xxx.xxx.xxx.xxxMapper.save
  • 原文地址:https://www.cnblogs.com/FireLL/p/11612891.html
Copyright © 2020-2023  润新知