Logrotate实现Catalina.out日志每俩小时切割
一.Logrotate工具介绍
Logrotate是一个日志文件管理工具,它是Linux默认自带的一个日志切割工具。用来把旧文件轮转、压缩、删除,并且创建新的日志文件。我们可以根据日志文件的大小、天数等来转储,便于对日志文件管理,一般都是通过cron计划任务来完成的,让日志切割实现按小时分割,按天分割等。
二.Logrotate运行机制
系统会定时运行logrotate,一般是每天一次。系统是这么实现按天执行的。crontab会每天定时执行/etc/cron.daily目录下的脚本,而这个目录下有个文件叫logrotate。
[root@test01 ~]# 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会调用配置文件/etc/logrotate.conf
三.Logrotate的组成
/usr/sbin/logrotate #程序所在位置;
/etc/cron.daily/logrotate #默认让Cron每天执行logrotate一次;
/etc/logrotate.conf #全局配置文件;
/etc/logrotate.d/ #应用自个的配置文件存放目录,覆盖全局配置;
注意:logrotate.d 是一个目录,该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行。另外,如果/etc/logrotate.d/里面的文件中没有设定一些细节,则会以/etc/logrotate.conf这个文件的设定来作为默认值。
四.Logrotate的命令格式
logrotate [OPTION...] <configfile>
-d, --debug :debug模式,测试配置文件是否有错误。
-f, --force :强制转储文件。
-m, --mail=command :压缩日志后,发送日志到指定邮箱。
-s, --state=statefile :使用指定的状态文件。
-v, --verbose :显示转储过程。
例如:想强行切割日志文件,不等logrotate切割。
[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat #我是用来测试用的嘿嘿 注意:CentOS7 命令是在/usr/sbin/里。
五.常用配置参数说明
Logrotate功能的实现,最重要的就是它的配置参数
下面介绍下它常用的配置参数:
|
compress |
启用压缩,指的是轮替后的旧日志,这里默认用的是gzip压缩的 |
|
daily |
每天轮替 |
|
dateext |
使用当期日期作为命名格式 |
|
dateformat .%s |
配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数 |
|
ifempty |
即使日志文件是空的也轮替 |
|
|
将轮替后的文件发送到指定E-mail地址 |
|
copytruncate |
用于还在打开中的日志文件,把当前日志备份并截断,是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。 |
|
monthly |
一个月轮替一次 |
|
nocompress |
如果在logrotate.conf中启用了压缩,这里是做不用压缩的参数 |
|
nomail |
不发送邮件到任何地址 |
|
notifempty |
如果日志是空的就不轮替(也就是空日志不切割) |
|
olddir + 目录 |
轮替后日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 |
|
rotate +次数 |
轮替最多保留之前的数据几次,超出的将被删除或邮件接收,设为0则不保存 |
|
size size |
当日志增长到指定大小的时候开始轮替 |
|
weekly |
如果当前的星期几比上次轮替的星期几少,或者过了一个多星期,就会发生轮替通常是在每周的第一天轮替,如果logrotate不是每天运行的,会在第一次有机会时进行轮替 |
|
yearly |
如果当前年份不同于上次轮替的年份,则进行日志轮替 |
|
Missingok |
如果日志丢失,不报错继续滚动下一个日志 |
六.安装配置Logrotate
#yum安装下
[root@test01 ~]# yum -y install logrotate
#机器已经装好tomcat,下面配置切割tomcat日志的配置文件
[root@test01 ~]# vim /etc/logrotate.d/tomcat
注意:logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。
日志文件的切割轮循设置在独立的配置文件中,它们是放在/etc/logrotate.d/目录下的。
[root@test01 ~]# mkdir -p /var/log/tomcat/oldlog
[root@test01 ~]# cat /etc/logrotate.d/tomcat
/usr/local/tomcat8/logs/catalina.out { #要切割的日志路径,如果是多个就用空格分隔
notifempty #如果日志是空的就不轮替(也就是空日志不切割)
rotate #轮替最多保留之前的数据5000次
missingok #如果日志丢失,不报错继续滚动下一个日志
compress #启用压缩,指的是轮替后的旧日志,这里默认用的是gzip压缩的
dateext #使用当期日期作为命名格式
dateformat .%Y%m%d-%H点 #配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s
olddir /var/log/tomcat/oldlog #轮替后日志文件放入指定的目录
}
注意:我这个配置里没有设置多久切割一次,但是它也是一天切割一次,因为当/etc/logrotate.d/tomcat这个文件没有配置时,默认是每天定时执行/etc/cron.daily/logrotate这个文件,这个文件是一天一次的。
#强制执行切割,查看/var/log/tomcat/oldlog下是否有日志
[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat reading config file /etc/logrotate.d/tomcat olddir is now /var/log/tomcat/oldlog Allocating hash table for state file, size B Handling logs rotating pattern: /usr/local/tomcat8/logs/catalina.out forced from command line ( rotations) olddir is /var/log/tomcat/oldlog, empty log files are not rotated, old logs are removed considering log /usr/local/tomcat8/logs/catalina.out log needs rotating rotating log /usr/local/tomcat8/logs/catalina.out, log->rotateCount is Converted ' .%Y%m%d-%H点' -> '.%Y%m%d-%H点' dateext suffix '.20181226-15点' glob pattern '.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9]点' glob finding old rotated logs failed fscreate context set to unconfined_u:object_r:usr_t:s0 renaming /usr/local/tomcat8/logs/catalina.out to /var/log/tomcat/oldlog/catalina.out.-15点 compressing log with: /bin/gzip set default create context to unconfined_u:object_r:usr_t:s0 set default create context
#查看切割结果

#把之前切割的删除了,因为再定时切割文件是相同的,还是catalina.out.20181226-15点.gz这个文件,所以不会切割成功。
[root@test01 ~]# rm -rf /var/log/tomcat/oldlog/catalina.out.-15点.gz
[root@test01 ~]# ls /var/log/tomcat/oldlog/
[root@test01 ~]#
#设置定时任务,每一分钟切割一次(注意:日志里要有内容,因为前面定义空的日志文件是不切割的)
[root@test01 ~]# crontab –e
*/ * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >>/var/log/tomcat/oldlog/cutting.log
#每俩小时切割一次
[root@test02 ~]# crontab -l
*/ * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /root/chenjiaxin/cutting.log
#查看定时切割的结果

当然,上面设置一分钟切割一次,是为了实验能尽快看到效果。实际是需要根据公司需要来设置多久来切割一次日志的!
Logrotate实现Catalina.out日志每俩小时切割的更多相关文章
- 日志切割工具logrotate解决Tomcat catalina.out日志过大的问题
一.介绍日志切割logrotate 对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了 ...
- tomcat catalina.out日志切割(logrotate)
简单说明: 1,因为tomcat日志会一直往catalina.out里面输出,所以回到值catalina.out非常大,占用磁盘空间 2,日志非常大,查看日志就需要很长时间. 3,据说catalina ...
- 【教程】Tomcat 的catalina.out 日志按照自定义日期格式进行切割
本文简单介绍在使用cronolog对tomcat的日志进行自定义日期格式的切割,方便日志的整理和遇到问题日志的排查! 安装cronolog 安装cronolog的方法网上有很多,这里也简单的介绍一下. ...
- tomcat的catalina.out日志文件过大
今天发现一个服务器的/opt目录数据过大,最后发现是tomcat中的catalina.out日志过大引起的 用du命令查看opt下一层的数据文件大小 [root@ccssapportalp opt]# ...
- catalina.out日志割接
文章转载自:https://blog.51cto.com/loong576/2091460 Tomcat的catalina.out日志分割有多种方式,如logrotate.cronolog等,本文采用 ...
- Tomcat catalina.out日志使用log4j按天分割
由于tomcat catalina.out日志不会自动分割, 一.日志分割所需包在附近中 1. 压缩包中有三个jar包: log4j-1.2.16.jar tomcat-juli-adapters.j ...
- Tomcat 的 catalina.out 日志分割
一.背景 Tomcat 的 catalina.out 日志量不断增加,占用空间较大,且默认是不滚动的.因此,需要对其进行日志分割,并进行清理. 本文选用 Cronolog 对其进行分割. 二.安装 1 ...
- linux 清空catalina.out日志 不需要重启tomcat(五种方法)【转】
1.重定向方法清空文件 [root@localhost logs]# du -h catalina.out 查看文件大小17M catalina.out[root@localhost logs] ...
- Tomcat7 catalina.out 日志分割
Tomcat7 catalina.out 日志分割 安装过程如下: 1.下载(最新版本) cronolog-1.6.2.tar.gz 2.解压缩 # tar zxvf cronolog-1. ...
随机推荐
- 把js生成的内容放入网页原有的div上
<script> ; ; //5列 ); ; var htmlstr="<table style='position:absolute;top:9%;left:10%; b ...
- IDEA 生成 JPA实体类
文章目录1.创建工程2.连接数据源3.生成`JPA`实体类4.生成实体类结果1.创建工程使用Maven来构建工程,为了简化创建步骤 创建一个新工程不包含任何Maven模板,[按需添加] 命名 Grou ...
- jdk安装完为什么会有两个JRE?
jdk安装完为什么会有两个JRE? 之所以需要两套 jre ,是因为可以分担工作:当用户只需要执行 java 的程序时,那么 c:\program files\java\jre 下的 jre 就 ok ...
- webapi 开启跨域支持
1.Global文件: GlobalConfiguration.Configuration.EnableCors(); 2.需要跨域的action或controller添加跨域规则 [EnableCo ...
- Spring课程 Spring入门篇 4-1 Spring bean装配(下)之bean定义及作用域注解实现
课程链接: 1 概述 2 代码演练 3 代码解析 1 概述 1.1 bean注解相关 a context:component-scan标签使用 问:该标签的作用是什么? 答:该标签作用是支持注解,在x ...
- Asp.Net中ObjectDataSource控件传参绑定数据
最近在实习,在上头交付的任务中,由于需要使用Asp.Net的ListView控件,因此必然得就使用了ObjectDataSource控件,由于在使用过程中,需要网页中的参数发送到后台后,运行该参数进行 ...
- iOS 8 提供 TestFlight 方便开发者测试软件 (转)
原文地址:http://tech2ipo.com/66893 TestFlight / via iMore 作者: Nick Arnott 译者:翛凌 原文:iMore iOS 应用程序的测试对 ...
- JQuery中Checkbox选择
判断是否选中 $(this).is(":checked") 取消选中 $(this).prop("checked", false) 选中 $(this).pro ...
- 【工作】Proxy Server的优化 - 检测目标网站URL变化
在工作中,我在组里负责一个Proxy(代理)的Module,这个Module是针对微软的Office 365的邮件门户OWA实现,工作起来后,用户访问Office 365 OWA,无需再输入Offic ...
- Prestashop-1.6.1.6-zh_CN (Openlogic CentOS 7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: prestashop1.6.1.6 commercial content management ecommerce open-source 简体中文 ...