Logrotate使用说明

18 篇文章 0 订阅
11 篇文章 0 订阅

功能描述

Logrorate程序是一个日志文件管理工具,主要用于日志切割。
可以避免日志体积递增,带来的各种问题。

常用参数

常用参数说明
额外的参数说明

  • dateext
    切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号.
    eg.
    mylog.foo
    mylog.foo.20211008 (不配置该参数,则为mylog.foo.1)
    
  • dateformat
    配合dateext使用可以为切割后的日志加上YYYYMMDD格式的日期,如dateformat -%Y%m%d
  • extension ext
    ext后缀的日志文件,在压缩之后,文件后缀保持不变
    eg.
    mylog.foo 
    param: extension foo
    日志压缩后是mylog.1,foo.gz(不配置该参数,则为mylog.foo.1.gz)
    
  • sharedscripts
    对于rotate多个日志文件时,指定postrotate只执行一次,而不是每个日志文件rorate后执行一次

设置size、maxsize、minsize参数后什么时候会对log进行转储:

type大小大于配置时间大于配置log大小大于配置 && 时间大于配置
minisize××
maxsize
size×

Tips: 更多参数,详见 man logrotate

执行命令

logrotate [-vf] logfile

  • -v 显示模式
  • -f 强制执行rotate

eg:

logrotate -vf /etc/logrotate.conf 
/usr/sbin/logrotate  /etc/logrotate.conf

日志

/var/lib/logrotate/status
Default state file. 默认状态,记录了转储踪迹。
文件内容格式:

"/var/log/cron.log" 2021-10-3-0:0:2
"/var/log/messages" 2021-8-3-0:0:0

安装

一般来说,linux系统会默认安装
需要安装的话,参考《Linux软件安装管理的三种方式——源码安装/deb/rpm/yum/apt》

举个例子

每周切割etcd日志,或者是日志size超过10M时进行日志切割;
保存100个日志转储个数;
日志转储,建立新的日志文件的用户和群组都为etcd,文件权限为0644;
日志转储后,热加载etcd,使etcd写入到新的日志文件。

日志路径: /data/etcd/log/

/data/etcd/log/*.log {
        weekly
        rotate 100
        dateext
        missingok
        size 10M
        compress
        delaycompress
        notifempty
        create 0644 etcd etcd
        sharedscripts
        postrotate
                /usr/bin/killall -HUP etcd
        endscript
}

日志切割后

执行原理

logrotate 的定时是由cron执行。

全局缺省配置

缺省配置文件:/etc/logrotate.conf
缺省全局配置一般在最开始的部分,影响整个系统。
每个配置文件都可以设置全局选项(本地定义覆盖全局选项,后面的定义覆盖之前的定义)

# see "man logrotate" for details
# rotate log files weekly
weekly

# use the adm group by default, since this is the owning group
# of /var/log/syslog.
su root adm

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
#dateext

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d  # 这个选项非常有用,读入存放在/etc/logrotate.d 目录中的日志转储参数,一般安装包和用户配置,都放到这个路径之下

# system-specific logs may be also be configured here.
定时执行

linux系统每天判断程序是否存在,定时执行logrorate.conf

  1. crontab主配置文件定时执行cron.daily
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
  1. cron.daily执行logrorate程序

/etc/cron.daily/logrotate

# this cronjob persists removals (but not purges)
if [ ! -x /usr/sbin/logrotate ]; then
    exit 0
fi

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

需要自定义转储间隔时,logrorate配置中不配置转储间隔参数,直接在crontab中自定义转储时间

参考:
https://blog.csdn.net/taiyang1987912/article/details/47829895

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值