日志切割工具--logrotate

2022-10-04 14:26:01 浏览数 (1)

代码语言:javascript复制
系统一般每天会定时运行logrotate一次,crontab 会每天定时运行 /etc/cron.daily 目录下的脚本,有个脚本叫 logrotate

/usr/bin/logrotate		# logrotate 目录
/etc/cron.daily/logrotate
/etc/logrotate.conf		# 全局配置文件
/etc/logrotate.d


安装

代码语言:javascript复制
yum install logrotate

配置(示例每天定时切割 tomcat 日志)

代码语言:javascript复制
vim /etc/logrotate.d/tomcat

    /data/tomcat/logs/catalina.out {
	daily		# 每天整理一次
	copytruncate	# 用于还在打开中的日志文件,把当前日志备份并截断
	rotate 30	# 保留30天的备份文件,一定要备份,如果不配置默认是0,也就是只允许存在一份日志,刚切出来的日志马上就会被删除
	compress	# 通过 gzip 压缩转储日志
	notifempty	# 如果是空文件,不转储
	dateext		# 文件后缀是日期格式,也就是切割后的文件是xxx.log-20220312.gz
	missingok	如果日志不存在则忽略该警告信息
    }

# 以下为不常用的参数
weekly            		# 指定转储周期为每周
monthly           		# 指定转储周期为每月
nocompress        		# 不需要压缩时,用这个参数
nocopytruncate    		# 备份日志文件但是不截断
create mode owner group   	# 转储文件,使用指定的文件模式创建新的日志文件
nocreate          		# 不建立新的日志文件
delaycompress 和 compress    	# 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress     		# 覆盖 delaycompress 选项,转储同时压缩
errors address     		# 转储时的错误信息发送到指定的Email 地址
ifempty     			# 即使是空文件也转储,这个是 logrotate 的缺省选项
mail address     		# 把转储的日志文件发送到指定的E-mail 地址
nomail      			# 转储时不发送日志文件
olddir directory      		# 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir      			# 转储后的日志文件和当前日志文件放在同一个目录
prerotate/endscript     	# 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript   		# 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

测试

代码语言:javascript复制
logrotate -d /etc/logrotate.d/tomcat		# 调试-d
logrotate -v -f /etc/logrotate.d/tomcat		# 强制执行-f

0 人点赞