tomcat日志切割

2019-07-19  本文已影响0人  Al_不期而遇

因catalina.out在用磁盘大量空间,日志没有做收缩操作,需要zabbix报警的时候释放空间,比较繁重(cat /dev/null > catalina.out),因日志保存周期需要一个月。

网上找了有关tomcat日志分割的。使用jar包和使用logrotate。我觉得使用jar比较繁琐,这里我使用logrotate操作。

一、检查本机是否按照了logrotate

rpm -ql logrotate

二、配置文件位置在/etc/logrotate.conf

三、需要修改的文件目录在/etc/logrotate.d/下面,这里的文件需要我们手动创建的。

四、touch tomcat

cat tomcat

/tmp/tomcat/logs/catalina.out{

    copytruncate

    daily

    rotate 7

    compress

    missingok

    dateext

}

测试命令

logrotate -vf /etc/logrotate.d/tomcat

参数:

copytruncate:如果程序不支持重新打开日志的功能,又不能粗暴地重启程序,怎么滚动日志呢?copytruncate的方案出场了。

这个方案的思路是把正在输出的日志拷(copy)一份出来,再清空(trucate)原来的日志。

daily: 日志文件将按月轮循。其它可用值为‘mouth’,‘weekly’或者‘yearly’。

rotate 7: 一次将存储7个归档日志。对于第八个归档,时间最久的归档将被删除。

compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。

missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

dateext:加入时间后缀

详细步骤如下:

拷贝程序当前正在输出的日志文件,保存文件名为滚动结果文件名。这期间程序照常输出日志到原来的文件中,原来的文件名也没有变。

清空程序正在输出的日志文件。清空后程序输出的日志还是输出到这个日志文件中,因为清空文件只是把文件的内容删除了,文件的inode编号并没有发生变化,变化的是元信息中文件内容的信息。

结果上看,旧的日志内容存在滚动的文件里,新的日志输出到空的文件里。实现了日志的滚动。

错误排查

empty log files are rotated, old logs are removed

considering log /tmp/txt.log

error: skipping "/tmp/txt.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.

set default create context

配置文件加入 su root root

上一篇 下一篇

猜你喜欢

热点阅读