zoukankan      html  css  js  c++  java
  • logrotate分割日志文件

    昨天参与做的线上项目上线了,看了下log文件居然还没有分割,考虑到可能导致log文件很大造成性能下降,赶紧做了下日志分割。Linux下有个logrotate工具可以协助日志分割,只需要配置一下参数就可以了,非常方便,于是采用这种方式直接配置了一下。

    我是用来做nginx日志文件分割的,我的配置文件如下:

    在/etc/logrotate.d/目录下创建一个配置文件例如nginx,文件内容如下:

    /search/nginx/logs/access_log /search/nginx/logs/error.log{
    daily
    dateext
    extension .log
    create
    rotate 60
    notifempty
    sharedscripts
    postrotate
    [ ! -f /usr/local/nginx/sbin/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/sbin/nginx.pid`
    endscript

    }

    字段的含义分别是:

    daily 每天分割一次

    dateext 表示用日志格式来表示日志文件,这样日志名就改成access-20140626

    extension .log 表示在日志名后面再加上 .log后缀名  日知名编程access-20140626.log

    create 表示分割好之后创建新的日志文件 即创建access.log

    rotate 60 表示备份这么多份

    notifempty 表示日志文件如果为空的话就不做分割

    sharedscripts 表示多个日志文件之间 只执行一次logrotate

    postrotate
    [ ! -f /usr/local/nginx/sbin/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/sbin/nginx.pid`
    endscript 

    表示的是执行完logrotate之后,执行那个命令

    还有很多其他的参数,具体可以 man logrotate查看。

    我在配置完logrotate之后以为得置crontab文件 来让logrotate定时执行,于是:

    crontab -e

    59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx

    结果第二天来看发现分割了两次,23:59的时候分割了一次,04:02的时候也分割了一次,才知道原来logrotate是会自动执行的,时间是4点的时候,也可以修改配置文件来修改时间,所以不用再设定crontab文件。

    在拷贝和清空之间有一个时间差,所以可能会丢失部分日志数据。

     

  • 相关阅读:
    HDU1251 字典树 这题亮点在于是我自己写的字典树
    POJ3253 哈夫曼树+小根堆 【自己实现】
    poj3083 深搜
    用c语言的感觉
    poj1321 深搜
    POJ 2488 深搜
    HDU2037 今年暑假不AC 贪心
    hdu1247 Hat’s Words 字符串模拟
    Thrift框架具体使用
    如何使用Rose将类图转化为java代码
  • 原文地址:https://www.cnblogs.com/hahawgp/p/3809729.html
Copyright © 2011-2022 走看看