logrotate

在工作中经常会有需求去查看日志,无论是通过应用或者系统error日志去查找问题或者通过nginx的访问日志统计站点日均PV、UV。所以体现了日志的重要性,但是通常当业务越来越大的时候各项目产生的日志将会是个很大的数字,尤其是我们会需要查找往期的日志,这时候就需要对日志进行合理的备份保留。随着时间的累计,一个日志文件将会变得很大,我们通过命令去查找需要的日志段的时候就会显得非常困难,所以我们需要读各类日志进行切割轮询处理。

logrotate是系统自带的日志切割工具,它配合crond和shell脚本可以实现对日志的切割轮询。以下将介绍如何使用logrotate。

1、查看本机logrotate

[root@iZ28ed866qmZ data]# which logrotate
/usr/sbin/logrotate

2、在任意目录下创建logrotate执行文件

[root@iZ28ed866qmZ data]# mkdir logrotate
[root@iZ28ed866qmZ logrotate]# vim tomcat_log1.conf

/workspace/service_platform/apache-tomcat-7.0.69-jd1/logs/catalina.out{ #产生日志的路径
       copytruncate
       daily
       dateext
       missingok

}

3、logrotate参数详解

daily: 指定转储周期为每天
weekly: 指定转储周期为每周

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

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

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

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

notifempty: 如果日志文件为空,轮循不会进行

create 644 root root:以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件

dateext: 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期

compress: 通过gzip 压缩转储旧的日志

delaycompress: 当前转储的日志文件到下一次转储时才压缩

notifempty: 如果日志文件为空,不执行切割

sharedscripts: 只为整个日志组运行一次的脚本

postrotate/endscript: 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

size:  size当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem)

3、通过crond定时执行

[root@iZ28ed866qmZ logrotate]# crontab -l
##tomcat log##
* * * /usr/sbin/logrotate -f /data/logrotate/tomcat_log1.conf

4、通过脚本备份按期清理

[root@iZ28ed866qmZ scripts]# cat log1_polling.sh
#!/bin/sh logs_path="/workspace/service_platform/apache-tomcat-7.0.69-jd1/logs"
c_log=catalina.out
a_log=localhost_access_log
find $logs_path -name "catalina.*-*-*.log" -exec rm -rf {} \;
for i in $(seq );
do
dates=`date +"%Y%m%d" -d "-${i}day"`
dates2=`date +"%Y-%m-%d" -d "-${i}day"`
cd $logs_path
tar zcf $a_log.$dates.tar.gz $a_log.$dates2.txt
tar zcf $c_log.$dates.tar.gz $c_log-$dates
sleep
wait
find $logs_path -mtime + -name "localhost_access_log.*.txt" -exec rm -rf {} \;
find $logs_path -mtime + -name "catalina.out-*.log" -exec rm -rf {} \; done find $logs_path -mtime + -name "localhost_access_log.*.tar.gz" -exec rm -rf {} \;
find $logs_path -mtime + -name "catalina.*.tar.gz" -exec rm -rf {} \;

5、加入定时任务

[root@iZ28ed866qmZ scripts]# crontab -l
* * * /bin/sh /data/scripts/log1_polling.sh

最新文章

  1. [原] KVM 虚拟化原理探究(4)— 内存虚拟化
  2. java连接sql server2005
  3. Why Deep Learning Works – Key Insights and Saddle Points
  4. Awesome Reinforcement Learning
  5. tty & pty & pts
  6. 如何在ASP.NET中用C#将XML转换成JSON 【转】
  7. 关于js封装框架类库之样式操作
  8. 简单描述RAID级别:
  9. 用tortoiseGit管理GitHub项目代码(完整教程)
  10. AVL树 & 重平衡概念
  11. 【vuejs深入二】vue源码解析之一,基础源码结构和htmlParse解析器
  12. [AtCoder 2702]Fountain Walk - LIS
  13. linux(乌班图)修改apt下载源
  14. linux150条命令
  15. 9.12 Django路由
  16. PLSQL developer常用技巧
  17. 干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的?
  18. 菜单Menu
  19. tomcat集群基于Nginx——共享同一个应用
  20. Linux远程桌面(一)

热门文章

  1. i春秋-百度杯九月场-YeserCMS(cmseasy的UpdateXML注入漏洞)
  2. hdu 3549 Flow Problem 最大流问题 (模板题)
  3. Prometheus Operator 架构【转】
  4. 编程题目: 两个队列实现栈(Python)
  5. element设置headers添加token
  6. 08.swoole学习笔记--异步tcp客户端
  7. Oracle delete 之后恢复数据
  8. IDA使用初步
  9. JuJu团队12月2号工作汇报
  10. Java8集合框架——HashSet源码分析