Linux使用logrotate来切割日志文件
作者:wuyuan 发布时间:2022-02-23 17:42:37
程序在运行的时候为了了解运行状态,会输出日志文件,时间久了日志文件会变得非常大,甚至达到GB级别。我在golang应用里使用logrus包来打日志,配置和使用都很方便,就是没有日志分割的功能,应用在线上运行一个月后日志文件都已经达到上百兆。后来发现了logrotate,这是centos自带的日志分割工具,都不用安装额外组件就能实现定时分割日志。
1.运行原理
logrotate由系统的cron运行,位置在/etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
可以看到入口配置文件是/etc/logrotate.conf,依次运行/etc/logrotate.conf.d里的配置文件 如果发现配置的logrotate没有执行,可以看下系统的crond服务有没有开启
2.配置
如果有安装nginx,可以参考nginx里的配置例子
/var/log/nginx/*log {
create 0644 nginx nginx
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
第一行定义的是日志文件的路径,可以用*通配,一般可以定义成*.log来匹配所有日志文件。也可以指定多个文件,用空格隔开,比如
/var/log/nginx/access.log /var/log/nginx/error.log {
}
花括号里面是日志切割相关的参数,下面是常用的切割参数
compress 是否开启压缩,压缩格式gzip
不开启压缩
compresscmd 自定义压缩命令
compressexty 压缩文件名后缀
compressoptions 压缩选项
copy 复制一份文件
create 后面跟mode owner group,设置新日志文件的权限
daily 按天分割
weekly 按周分割
monthly 按月分割
rotate 后面跟数字,表示需要保留的文件历史记录,超过数量就会删除,或者通过邮件发送
size 后面跟文件大小,比如100k、100M,超过这个大小后分割
missingok 忽略不存在的文件,不报错
notifempty 不分割空文件
sharedscripts 配合postrotate、prerotate,让他们只执行一次
postrotate/endscript 文件分割完后,执行postrotate、endscript之间的命令
prerotate/endscript 文件分割完前,执行prerotate、endscript之间的命令
下面看几个例子
/var/log/httpd/error.log {
rotate 5
mail i@wuyuans.com
size=100k
sharedscripts
postrotate
/sbin/killall -HUP httpd
endscript
}
切割/var/log/httpd/error.log日志文件,超过100k后切割,保留最新的5个历史记录,超过5个的邮件发送到fss@qq.com,postrotate里的的命令是为了让httpd重新打开日志文件。
/var/lib/mysql/mysqld.log {
# create 600 mysql mysql
notifempty
daily
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin --local flush-error-log \
flush-engine-log flush-general-log flush-slow-log
fi
endscript
}
这是对mysql日志的切割,每天一份,忽略空文件,保留最新3份,使用gzip压缩
/home/wuyuan/log/*.log {
su wuyuan wuyuan
create 0777 wuyuan wuyuan
daily
rotate 10
olddir /home/wuyuan/log/old
missingok
postrotate
endscript
nocompress
}
这是我在用的配置项,对log目录所有.log文件切割,每天一份,保留10份,新文件设定权限777,历史文件保留在old目录里,这样可以方便查看。因为应用程序用的logrus使用append的方式写日志,所以不需要重新打开日志文件,这点logrus做得很不错。
3.测试
写完配置文件后可以手动执行下,来验证是否可用。
logrotate -f /etc/logrotate.d/wuyuan
其中-f 表示强制执行,其他命令可以用help来查看
logrotate --help
用法: 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')
-s, --state=statefile Path of state file
-v, --verbose Display messages during rotation
-l, --log=STRING Log file
--version Display version information
Help options:
-?, --help Show this help message
--usage Display brief usage message
没问题的话日志就会被移到old目录下,并带上日期,之前的log文件会被清空


猜你喜欢
- 11月17日下午消息,据百度内部可靠消息证实,百度一个月前已低调收购点讯输入法,意在加强百度在手机输入方面的竞争力,目前尚不知道这笔交易的具
- 国际在线专稿:据英国《每日邮报》报道,为帮助慈善公益事业,伦敦的24名互联网企业家近日慷慨地宽衣解带,拍摄了一组近乎裸体的慈善挂历。这套挂历
- Godaddy主机的VDS,对于一些不熟悉Linux的朋友来说,是比较头疼的事,不过一些简单的SSH远程管理操作其实也不难,如果想使用VDS
- Apache Superset是一个强大的BI工具,它提供了查看和探索数据的方法。它在 ClickHouse 用户中也越来越受欢迎。我们将介
- 11月14日国际报道 如果你在Google搜索列输入"Matt"一字,最先出现的结果不会是明星演员Matt Damon或
- 1.域名和空间域名对排名的影响是非常小,但对网站整体来说却是很重要,因为一个好的域名会给我们带来很大流量和知名度,选择的时候,以短小易记为原
- 11月13日消息,在距离百度新广告系统百度推广专业版(凤巢)全面推出还有半个月之际。日前,百度商业运营副总裁沈皓瑜就新广告系统凤巢与媒体进行
- smurf、trinoo、tfn、tfn2k以及stacheldraht是比较常见的DoS攻击程序,本文将对它们的原理以及抵御措施进行论述,
- 最近网络中有主机频繁断线,刚刚开始还比较正常,但是一段时间后就出现断线情况,有时很快恢复,但是有时要长达好几分钟啊,这样对工作影响太大了。最
- 本文介绍了Centos6.9安装vsftpd并配置多用户的方法,分享给大家,具体如下:一、安装vsftpd#安装vsftpdyum -y i
- 写下这篇文章之前,我想先说说我自己,我,玉龙,建站经验8年,在K666时代开始泡,chinaz泡过,落伍泡过,cnzz泡过,XXSKY的时候
- linux共享上网设置1、打开内核ip转发vi /etc/sysctl.conf net.ipv4.ip_forward = 1执行sysc
- 1. 输入命令:cd /media2. 输入命令:sh VBoxLinuxAdditions.run3. 可能会出现错误:解决的办法是依次输
- Denis不愧是个WPfans,今天教我这个菜鸟如何一次安装多个wordpress blog所谓知易行难,看了他的文章,我照葫芦画瓢搞了半天
- 喜欢非主流的我们,容易伤感,更喜欢用一些伤感图作为QQ签名图。不过,你知道如何制作这种伤感图片么?其实没那么难,不用PS,因为时下有很多操作
- Linux 中firewall的使用方法总结 firewall 简单使用 1,显示所有配置firewall-cmd --
- 核心提示:404错误页面。总之就是链接不存在相应的网页。那么404错误页面对seo有什么影响吗?有什么好利用的呢?出现错误页面的情况,一般有
- 但这种实现会引起严重的饥饿问题。由于多个子进程同时执行这个循环,它们将在select中阻塞。当任何socket上出现一个请求时,所有被阻塞的
- 一、VMware vSphere简介VMware vSphere 是业界领先且最可靠的虚拟化平台。vSphere将应用程序和操作系统从底层硬
- 1.网络的成功,是可以复制的。 2.自己做不了的事情,找别人来完成。 3.交际是网络创业成功的捷径。 4.做网络的真正的高手,都是年龄大于3