linux运维、架构之路-tomcat日志切割工具 logrotate
2024-10-07 07:26:36
一、Logrotate简介
1、Logrotate实际就是对日志进行切割的小工具,他通过让用户来配置规则的方式,检测和处理日志文件。配合Cron可让处理定时化;
2、Logrotate预制了大量判断条件和处理方式,可大大降低手写脚本的负担和出错的可能;
3、Logrorate检测日志文件属性,比对用户配置好的检测条件,对满足条件的再根据用户配置的要求来处理,整个可以通过Cron来定时调度,这其实是非常经典的Linux解决问题的思路,可以好好静下心来品味下,简单,好用。
二、Logrotate运行机制
系统会定时运行logrotate,一般是每天一次。系统是这么实现按天执行的。crontab会每天定时执行/etc/cron.daily目录下的脚本,而这个目录下有个文件叫logrotate
[root@svn ~]# cat /etc/cron.daily/logrotate
#!/bin/sh /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit
三、Logrotate组成
以下是logrotate运行的关键点:
/usr/bin/logrotate #程序所在位置;
/etc/cron.daily/logrotate #默认让Cron每天执行logrotate一次;
/etc/logrotate.conf #全局配置文件;
/etc/logrotate.d #应用自个的配置文件存放目录,覆盖全局配置;
四、安装配置Logrotate
yum install -y logrotate
配置文件logrotate
[root@svn ~]# ll /usr/local/tomcat/logs/catalina.out
-rw-r----- root root 10月 /usr/local/tomcat/logs/catalina.out
[root@svn ~]# cat /etc/logrotate.d/tomcat.conf
/usr/local/tomcat/logs/catalina.out {
daily
copytruncate
rotate
compress
notifempty
dateext
missingok
}
配置文件参数说明:
daily #表示每天整理一次
rotate #表示保留20天的备份文件
dateext #文件后缀是日期格式,也就是切割后文件是:xxx.log-.gz
copytruncate #用于还在打开中的日志文件,把当前日志备份并截断
compress #通过gzip压缩转储以后的日志(gzip -d xxx.gz解压)
missingok #如果日志不存在则忽略该警告信息
notifempty #如果是空文件的话,不转储
#size 5M #当catalina.out大于5M就进行切割,可用可不用!
五、对日志进行切割测试
1、调试 (d = debug)参数为配置文件,不指定则执行全局配置文件
[root@svn logs]# logrotate -d /etc/logrotate.d/tomcat.conf
reading config file /etc/logrotate.d/tomcat.conf
Allocating hash table for state file, size B Handling logs rotating pattern: /usr/local/tomcat/logs/catalina.out after days ( rotations)
empty log files are not rotated, old logs are removed
considering log /usr/local/tomcat/logs/catalina.out
error: log /usr/local/tomcat/logs/catalina.out last rotated in the future -- rotation forced
log needs rotating
rotating log /usr/local/tomcat/logs/catalina.out, log->rotateCount is
dateext suffix '-20181009'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
destination /usr/local/tomcat/logs/catalina.out-.gz already exists, skipping rotation
2、强制执行(-f = force),可以配合-v(-v =verbose)使用,注意调试信息默认携带-v
[root@svn logs]# logrotate -v -f /etc/logrotate.d/tomcat.conf
reading config file /etc/logrotate.d/tomcat.conf
Allocating hash table for state file, size B Handling logs rotating pattern: /usr/local/tomcat/logs/catalina.out forced from command line ( rotations)
empty log files are not rotated, old logs are removed
considering log /usr/local/tomcat/logs/catalina.out
log needs rotating
rotating log /usr/local/tomcat/logs/catalina.out, log->rotateCount is
dateext suffix '-20181009'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
copying /usr/local/tomcat/logs/catalina.out to /usr/local/tomcat/logs/catalina.out-
truncating /usr/local/tomcat/logs/catalina.out
compressing log with: /bin/gzip
效果如下:
[root@svn logs]# ll /usr/local/tomcat/logs/
总用量
-rw-r----- root root 10月 : catalina.--.log
-rw-r----- root root 10月 catalina.--.log
-rw-r----- root root 10月 : catalina.out
-rw-r----- root root 10月 catalina.out-.gz
-rw-r----- root root 10月 : host-manager.--.log
-rw-r----- root root 10月 host-manager.--.log
-rw-r----- root root 10月 : localhost.--.log
-rw-r----- root root 10月 localhost.--.log
-rw-r----- root root 10月 : localhost_access_log.--.txt
-rw-r----- root root 10月 localhost_access_log.--.txt
-rw-r----- root root 10月 : manager.--.log
-rw-r----- root root 10月 manager.--.log
这个工具会自动每天帮我们分隔日志并进行打包,不需要我们在写crontab的脚本,非常的好用!
最新文章
- python之路四
- Guava------------Cache使用方法
- 20款免费响应式的 HTML5 网站模板下载
- php 通过curl post发送json数据实例
- 远程登录,无法加载explorer
- Photoshop 使用曲线
- 实战案例:DIV嵌套
- linux shell 命令学习(4) cut - remove sections from each line of files
- JavaScript的正则表达式使用
- 【DB】HBase的基本概念
- ubuntu 16.04 一些使用过程中遇到的问题
- 【echart】学习笔记
- 洛谷题解 CF777A 【Shell Game】
- 清除Linux日志文件命令
- 搭建Linux下Android程序开发环境
- UICollectionView Demo
- python json 文件读写
- Java虚拟机性能监控与调优
- imx6 i2c分析
- AngularJS filter:search 是如何匹配的 ng-repeat filter:search ,filter:{$:search},只取repeat的item的value 不含label
热门文章
- java.io.FileNotFoundException: /usr/local/hadoop/logs/fairscheduler-statedump.log(权限不够)解决方案
- MSSQL注入--反弹注入
- kafka学习(四)
- echars 饼图 --》二次封装
- 删除MicrosoftOffice2016的扫尾工作
- [DS+Algo] 009 树的介绍
- vue组件化编程应用2
- 由于;引发的Oracle的BadSqlExecption
- tableview(model base)
- webpack4+vue打包简单入门