linux 按天切割日志(logrotate)

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

安装后系统会定时运行logrotate,一般是每天一次。系统是这么实现按天执行的。crontab会每天定时执行/etc/cron.daily目录下的脚本,而这个目录下有个文件叫logrotate。在centos上脚本内容是这样的:

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

此文件中只是执行了logrotate命令,然后传递一个配置参数。我们可以新建自己的脚本来执行logrotate命令,然后把脚本加入crontab中,就可以自定义文件分割了。

logrotate参数

logrotate参数说明

compress 通过gzip 压缩转储以后的日志
nocompress 不做gzip压缩处理
create mode owner group 轮转时指定创建新文件的属性,如create 0777 nobody nobody
nocreate 不建立新的日志文件
delaycompress 和compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
missingok 如果日志丢失,不报错继续滚动下一个日志
ifempty 即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
notifempty 当日志文件为空时,不进行轮转
mail address 把转储的日志文件发送到指定的E-mail 地址
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
sharedscripts 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
prerotate 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行
postrotate 在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
dateext 使用当期日期作为命名格式
dateformat .%s 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
size(或minsize) log-size 当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
当日志文件 >= log-size 的时候就转储。 以下为合法格式:(其他格式的单位大小写没有试过)
size = 5 或 size 5 (>= 5 个字节就转储)
size = 100k 或 size 100k
size = 100M 或 size 100M

实战

在logrotate.d下面新建一个文件,文件名随意
如下内容,日志路径根据自己的修改

/data/nginx/log/*.log {
        su root root
        rotate 180
        daily
        copytruncate
        dateformat .%Y%m%d
        compress
        notifempty
        missingok
}

执行下面的命令测试一把

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

如果没有成功,再执行下面的命令排查问题

/usr/sbin/logrotate -v -f -d /etc/logrotate.d/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要按大小切割日志文件,可以使用 logrotate 工具来实现。logrotate 工具可以定期对指定的日志文件进行轮转,以便于管理和备份。 以下是按大小切割日志文件的步骤: 1. 安装 logrotate 工具,可以使用以下命令进行安装: ``` sudo apt-get install logrotate ``` 2. 创建一个 logrotate 配置文件,可以在 /etc/logrotate.d 目录下创建一个新的文件,例如 /etc/logrotate.d/myapp。在该文件中,可以配置需要轮转的日志文件、轮转周期、保存的备份数量等参数。例如: ``` /var/log/myapp.log { size 10M rotate 5 compress dateext create 0644 root root } ``` 上面的配置表示,对 /var/log/myapp.log 文件进行轮转,当文件大小达到 10M 时进行轮转,最多保存 5 个备份文件,使用 gzip 进行压缩,备份文件名添加日期后缀,新建备份文件的权限为 0644,属主为 root。 3. 手动执行 logrotate 来进行日志轮转,可以使用以下命令来进行手动轮转: ``` logrotate -f /etc/logrotate.d/myapp ``` 上面的命令表示,强制执行 /etc/logrotate.d/myapp 配置文件中定义的轮转操作。 4. 配置 logrotate 定时任务,定期执行轮转操作。可以编辑 /etc/crontab 文件,添加以下行: ``` 0 0 * * * root logrotate -f /etc/logrotate.d/myapp ``` 上面的配置表示,每天午夜 0 点执行 logrotate 命令来进行日志轮转。 注意:在配置 logrotate 时,需要根据实际情况进行配置,以免误删重要的日志信息。另外,需要按照一定的规则来命名备份文件,以便于管理和查找。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值