Logrotate实现每小时切割日志文件

一、Logrotate背景介绍

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过crontab 定时任务。

1.1 安装

一般在服务器初始化的时候这些工具都已经存在的,但是为了保险,还是手动安装一下:

yum -y install logrotate

服务简单的说明:
服务的主配置文件:/etc/logrotate.conf

在这里插入图片描述

在主配置中可以看到 include /etc/logrotate.d 说明我们可以将用户定义的配置直接放到这下面,系统会自动为我们执行。当然,系统的并不能很好的满足我们需求。

二、logrotate配置介绍

再看看配置模板:

日志文件绝对路径 {
    各种参数...
}

参数包含:

参数说明
daily每天轮替一次
weekly每周轮替一次
monthly每月轮替一次
yearly每年轮替一次
rotate保留几个轮替日志文件
ifempty日志没有内容的时候也进行轮替
notifempty若日志为空,则不进行轮替
create旧日志文件轮替后创建新的日志文件
size日志达到多少后进行rotate
minsize文件容量一定要超过多少后才进行rotate
nocompress轮替但不进行压缩
compress压缩轮替文件
dateext轮替旧日志文件时,文件名添加-%Y %m %d形式日期,可用dateformat选项扩展配置。
dateformat .%s对日期进行格式定制
nodateext旧日志文件不使用dateext扩展名,后面序数自增如"*.log.1"
sharedscripts作用域下文件存在至少有一个满足轮替条件的时候,执行一次prerotate脚本和postrotate脚本。
prerotate/endscript在轮替之前执行之间的命令,prerotate与endscript成对出现。
postrotate/endscript在轮替之后执行之间的命令,postrotate与endscript成对出现。
olddir将轮替的文件移至指定目录下
missingok如果日志文件不存在,继续进行下一个操作,不报错

三、实现每小时切割日志文件

3.1、添加 logrotate 配置文件:

vim /etc/logrotate.d/nginx

内容如下:

/data2/data/cp*log/cp.log
 {
copytruncate    
rotate 87600
missingok
ifempty
dateext
dateformat -%Y%m%d-%H 
sharedscripts
postrotate
    if [ -f /usr/local/openresty/nginx/logs/nginx.pid ]; then
        kill -USR1 `cat /usr/local/openresty/nginx/logs/nginx.pid`
    fi
endscript
}

3.2 执行命令:

 //手动执行一次轮替:
 /usr/sbin/logrotate -vf /etc/logrotate.d/nginx

执行命令

logrotate [-dv] [-f|--force] [-s|--state statefile] config_file ..

执行命令选项

# logrotate --help
Usage: logrotate [OPTION...] <configfile>
  -d, --debug              Don't do anything, just test (implies -v) 不做实际处理,仅调试
  -f, --force              Force file rotation 强制执行,忽视参数要求
  -m, --mail=command        Command to send mail (instead of `/bin/mail') 发送mail
  -s, --state=statefile    Path of state file 查看状态文件
  -v, --verbose            Display messages during rotation 轮替一次,并显示轮替过程信息
  --version                Display version information 显示logrotate版本

Help options:
  -?, --help                Show this help message
  --usage                  Display brief usage message
  

3.3加入定时任务

crontab -e

每小时的59分进行切割 内容如下:

# Logrotate
59  * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx

这里只简单地介绍该种定时任务配置。

#格式
*(分钟) *(小时) *() *() *(周几) 用户 命令
# 若分钟位值为 *,表示0-59之间的任意有效值;
# 若分钟位值为 1,表示每小时的第1分钟;
# 若分钟位值为 */5,表示每5分钟
# 若分钟位值为10,20 表示每小时的第10分钟和第20分钟
# 若分钟位值为10-12 表示每小时的第101112分钟

效果如下:
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值