美文网首页
tomcat日志切割

tomcat日志切割

作者: Al_不期而遇 | 来源:发表于2019-07-19 15:02 被阅读0次

    因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

    相关文章

      网友评论

          本文标题:tomcat日志切割

          本文链接:https://www.haomeiwen.com/subject/emzllctx.html