在Linux系统下,各种程序的日志会随着时间增长越来越大,最终占满硬盘,系统崩溃。

〇、需求

1、自动分割日志文件
2、自动保留n个版本,删除旧文件
3、配置简单

一、基本配置

Logrotate可以管理任何日志文件,满足需求。

/etc/logrotate.conf为配置文件,配置文件中设置了目录/etc/logrotate.d/,用于分类存储logrotate的配置文件,可以针对日志文件分类起名。

/var/log/log-file {	#被管理的日志文件路径
	monthly		#轮循周期daily、weekly、yearly。
	rotate 5	#存储5个归档日志,一共是6个日志。
	compress	#轮循的归档日志使用gzip压缩。
	delaycompress	#与compress选项一起使用,控制logrotate不会将最新的归档文件压缩。
	missingok	#轮循期间忽略任何错误,如文件无法找到。
	notifempty	#如果日志为空则不进行轮循。
create 644 root root	#以指定权限创建全新日志文件,同时logrotate会重命名原始日志文件。
postrotate		#在其它指令完成后执行其中的指令。
	/usr/bin/killall –HUP rsyslogd
endscript
}			#结尾的括号必须独立一行
配置实例

二、使用方法

Logrotate需要手动运行或添加到crontab中定时自动运行。

/usr/sbin/logrotate /etc/logrotate.d/syslog

三、设置按照大小分割

选项weekly、monthly是根据时间分割
可以用size代替,按照文件大小分割
格式 size ${文件大小}

size 10		#10 Byte
size 10k	#10 KB
size 10m	#10 MB

注意:只有当运行logrotate时,才会根据配置文件判断是否分割文件,当按照文件大小分割时,设置的crontab时间周期需要根据文件增长速度估算一个大概时间。