我们通常会去寻找对应的日志切割服务,但是我们不知道系统默认已经默认带了一个日志的切割服务 logrotate。像我们系统的日志 /var/log/cron 、/var/log/maillog、/var/log/messages等等这些都是通过 logrotate 来进行切割的,我们可以在文件 /etc/logrotate.d/syslog 看到具体的配置。logrotate 可以每天或者每个月按周期对日志进行自动切割和压缩,以及通过邮件发送。logrotate 的自动切割是 通过 crond 来运行任务的。
logrotate 命令以及选项 logrotate [OPTION...] <configfile> -d, --debug # 仅仅是测试,并不做任何东西。在测试配置文件是否正确的时候可以使用。 -f, --force # 指定配置文件 -m, --mail=command # 指定发送邮件的命令,替代 /bin/mail -s, --state=statefile # 指定状态文件的路径 ,默认路径是 /var/lib/logrotate.status 。 -v, --verbose # 显示 logrotate 分割信息 -l, --log=STRING # 指定日志文件的路径 --version # 显示版本信息 logrotate 配置文件路径logrotate 配置文件的位置 位于/etc/logrotate.conf
logrotate 用户配置文件位于 /etc/logrotate.d/
logrotate 的执行状态文件/var/lib/logrotate.status
logrotate 配置文件的参数: compress # 是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行 compresscmd # 指定压缩的命令,默认 gzip uncompresscmd # 用于解压缩的日志文件的命令 默认是 gunzip compressext # 启用压缩的扩展名,默认 gzip 的扩展名就是 .gz。 copy # 制作日志文件的副本,与create选项互斥。 copytruncate # 用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。与create选项互斥。 create mode owner group # 在切割后,创建新的日志文件,并指定数据的权限和所有者和所属组。 dateext # 这个参数很重要!就是切割后的日志文件以当前日期YYYYMMDD为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式 dateformat format_string # 指定日志文件后缀日期格式 ifempty # 表示即使是空文件也要选择,该选项是默认值。与 notifempty 相反 notifempty # 当日志文件为空时,不进行轮转,与 ifempty 相反 mailfirst # 当配置了邮件地址,指定发送最新的文件 maillast # 当配置了邮件地址,指定发送最旧的文件,(默认设置) rotate count # 日志保留的次数, 如果该参数不写的话,默认就是删除之前所有的文件日志。比如切割了200次,那么只保留最新的180次日志,并删除旧的20次日志。如果配置文件指定的是 daily,那每天切割一次日志,就意味着保留180天日志。 maxage count # 删除早于 count 天的日志,如果配置了 mail 则通过邮件发送。 daily # 每天 切割 weekly # 每周运行一次,通常在每周的第一天。 monthly # 每月运行一次切割,通常会在该月的第一天。 yearly # 如果当前年份与上一次年份不相同,就会进行切割 nocompress # 不进行压缩。 size size # 日志文件达到多大就切割 olddir dir # 切割后存放的目录 start count # 当没有指定日期后缀,将数字作为后缀内容,默认是从 1 开始 。可以指定其他数字开始。 missingok # 如果日志丢失,不报错继续滚动下一个日志 mail 112@163.com # 该参数与 rotate 是有关联的,当超过 rotate 指定次数,文件不是删除,而是通过邮件发送到指定位置。 prerotate # 在logrotate转储之前需要执行的指令 postrotate # 在logrotate转储之后需要执行的指令 ### 3.85 版本增加每个小时切割 hourly # 每个小时切割 示例配置 # 文件路径,可以使用通配符。 /opt/tomcat/logs/catalina.out{ compress compressext .gz copytruncate dateext notifempty maillast rotate 180 daily size 10M olddir /opt/logs/tomcat missingok mail 888888@qq.com # 如果我们本地没有配置好发送邮件配置的话是发送不了邮件的。 } 常用命令 logrotate -d -f /etc/logrotate.d/tomcat # 测试配置文件是否配置正常 logrotate -f /etc/logrotate.d/tomcat # 立刻切割文件,可以将该命令放到定时任务中实现定时切割 注意事项: