一、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的脚本,非常的好用!

最新文章

  1. python之路四
  2. Guava------------Cache使用方法
  3. 20款免费响应式的 HTML5 网站模板下载
  4. php 通过curl post发送json数据实例
  5. 远程登录,无法加载explorer
  6. Photoshop 使用曲线
  7. 实战案例:DIV嵌套
  8. linux shell 命令学习(4) cut - remove sections from each line of files
  9. JavaScript的正则表达式使用
  10. 【DB】HBase的基本概念
  11. ubuntu 16.04 一些使用过程中遇到的问题
  12. 【echart】学习笔记
  13. 洛谷题解 CF777A 【Shell Game】
  14. 清除Linux日志文件命令
  15. 搭建Linux下Android程序开发环境
  16. UICollectionView Demo
  17. python json 文件读写
  18. Java虚拟机性能监控与调优
  19. imx6 i2c分析
  20. AngularJS filter:search 是如何匹配的 ng-repeat filter:search ,filter:{$:search},只取repeat的item的value 不含label

热门文章

  1. java.io.FileNotFoundException: /usr/local/hadoop/logs/fairscheduler-statedump.log(权限不够)解决方案
  2. MSSQL注入--反弹注入
  3. kafka学习(四)
  4. echars 饼图 --》二次封装
  5. 删除MicrosoftOffice2016的扫尾工作
  6. [DS+Algo] 009 树的介绍
  7. vue组件化编程应用2
  8. 由于;引发的Oracle的BadSqlExecption
  9. tableview(model base)
  10. webpack4+vue打包简单入门