zoukankan      html  css  js  c++  java
  • 日志切割轮转logrotate

    背景:

    今天重定向了nginx的日志,需要做一下日志切割。

    logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。

    1,先看是否已安装日志切割服务
    看下是否存在

    /usr/sbin/logrotate
    /etc/logrotate.conf
    /etc/logrotate.d/
    

     

    2,配置文件目录

    配置文件: /etc/logrotate.conf,这是 logrotate 的主配置文件。
    logrotate 还在 /etc/logrotate.d/ 中存储了特定服务的配置。

    3,新增本次目标配置 (其中具体字段含义,自己查)

    /etc/logrotate.d/nginx_log

    /etc/nginx/logs/*.log {
        create 0640 nginx root
        daily
        rotate 7
        dateext
        missingok
        sharedscripts
        postrotate
            /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
        endscript
    }

    dateext     让旧日志文件以创建日期命名。
    daily          每天执行。
    rotate 7:    保留7天。
    missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
    sharedscripts 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本。

    4,logrotate自身的执行日志

    logrotate自身的日志通常存放于 /var/lib/logrotate/logrotate.status 目录。如果处于排障目的,我们想要logrotate记录到任何指定的文件。

    5,logrotate的执行时间规律

    查看
    cat /etc/anacrontab


    里面有个
    START_HOURS_RANGE=3-22 这个是开始时间
    RANDOM_DELAY=45 这个是随机的延迟时间,表示最大45min.

    还有个
    1 5 cron.daily nice run-parts /etc/cron.daily

    第一个是Recurrence period 第二个是延迟时间,所以cron.daily会在3:22+(5,45)这个时间段执行。

    6,单独执行其中一个配置

    logrotate -vf nginx_log

    效果符合预期

  • 相关阅读:
    DateTime 格式化示例
    Linq To XML概述[转]
    .net邮件发送代码
    ASP.NET中c#的URL编码处理
    消息队列(Message Queue)简介及其使用
    C#多线程学习笔记之(abort与join配合使用)
    异常处理的性能损失
    推荐一款DataGridView的打印解决方案
    玩转App.Config
    推荐一个快速反射调用的类
  • 原文地址:https://www.cnblogs.com/zhangyabin---acm/p/15133766.html
Copyright © 2011-2022 走看看