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

linux运维、架构之路-tomcat日志切割工具 logrotate的更多相关文章

  1. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...

  2. Linux运维工程师入门的10大实用工具

    说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几方面,这样入门就基本没问题了. 工具如下: 1.Linux系统基础 这个不用说了,是基础中的基础,连这 ...

  3. 日志切割工具logrotate解决Tomcat catalina.out日志过大的问题

    一.介绍日志切割logrotate 对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了 ...

  4. Linux 运维测试及第三应用及测试工具

    一 .第三方应用及测试工具链接地址 https://pan.baidu.com/s/1rLQ5NCZvxcy93YQ4fGFaBQ 1.linux LSI系列raid卡监测工具 1)使用参数详解链接: ...

  5. Nginx日志切割工具——logrotate 使用记录

    1.安装 logrotate是Linux系统自带,无需安装 2.配置 进入[/etc/logrotate.d/nginx]文件修改配置 # 需要备份的日志路劲,一个或多个都可以 /data/logs/ ...

  6. tomcat catalina.out日志切割(logrotate)

    简单说明: 1,因为tomcat日志会一直往catalina.out里面输出,所以回到值catalina.out非常大,占用磁盘空间 2,日志非常大,查看日志就需要很长时间. 3,据说catalina ...

  7. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  8. Linux运维企业架构实战系列

    Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...

  9. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...

随机推荐

  1. 性能测试工具之Apache ab

    一.apache ab简介 ab全称ApacheBench,是著名的Web服务器软件apache附带的一款非常简单的压力测试工具,它可以同时模拟多个并发请求,测试Web服务器最大承受压力.Apache ...

  2. 中国MOOC_面向对象程序设计——Java语言_第1周 类与对象_1分数

    第1周编程题 查看帮助 返回   我们在题目说明中给出了一部分代码,你需要在这部分代码的基础上,按照题目说明编写代码,然后将两部分代码一起提交. 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨 ...

  3. linux 安装 sudo

    1.安装sudo# apt-get install sudo2.修改 /etc/sudoers 文件属性为可写# chmod +w /etc/sudoers3.编辑 /etc/sudoers ,添加如 ...

  4. Debian或者Ubuntu中安装secureCRT/secureFX

    1.官网下载 ubuntu 下的 xx.deb安装包.此处使用的安装包是scrt-sfx-8.5.4-1942.ubuntu16-64.x86_64.deb,点击下载,提取码:5em3. 2.安装 d ...

  5. 【Fiddler】开启手机的http或https抓包

    fiddler安装 下载fiddler最新版: 默认安装: 打开fiddler工具,默认界面: 选择上方,Tools-→options General界面 HTTPS界面 CONNECTIONS,po ...

  6. 浅谈vue学习之组件通信

    vue用组件化简化了我们编写代码的复杂度,组件之间经常会出现数据传递的情况,那么组件之间是怎样通信的呢? 使用props传递数据 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内 ...

  7. 使用certbot 为nginx或openresty启用https

    certbot 使用letsencrypt 生成免费https证书 以下内容网上整理,原文地址 https://segmentfault.com/a/1190000005797776 -------- ...

  8. [转帖]探秘华为(二):华为和H3C(华三)的分道扬镳

    探秘华为(二):华为和H3C(华三)的分道扬镳 https://baijiahao.baidu.com/s?id=1620781715767053734&wfr=spider&for= ...

  9. 高级BASH

    Bash介绍与入门 1,简介 Bash(GNU Bourne-Again Shell)是一个为GNU计划编写的Unix shell,它是许多Linux平台默认使用的shell shell是一个命令解释 ...

  10. Django之F和Q查询

    一.F查询 rom django.db.models import F from app01.models import Book Book.objects.update(price=F(" ...