服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Logrotate实现Catalina.out日志每俩小时切割示例

Logrotate实现Catalina.out日志每俩小时切割示例

2022-08-16 08:05小渣渣。 Linux

Logrotate是一个日志文件管理工具,它是Linux默认自带的一个日志切割工具。本篇文章主要介绍了Logrotate实现Catalina.out日志每俩小时切割示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助

一.Logrotate工具介绍

Logrotate是一个日志文件管理工具,它是Linux默认自带的一个日志切割工具。用来把旧文件轮转、压缩、删除,并且创建新的日志文件。我们可以根据日志文件的大小、天数等来转储,便于对日志文件管理,一般都是通过cron计划任务来完成的,让日志切割实现按小时分割,按天分割等。

二.Logrotate运行机制

系统会定时运行logrotate,一般是每天一次。系统是这么实现按天执行的。crontab会每天定时执行/etc/cron.daily目录下的脚本,而这个目录下有个文件叫logrotate。

?
1
2
3
4
5
6
7
8
9
10
11
[root@test01 ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
 
EXITVALUE=$?
 
if [ $EXITVALUE != 0 ]; then
 
  /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

实际运行时,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切割。

?
1
2
[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

即使日志文件是空的也轮替

mail

将轮替后的文件发送到指定E-mail地址

copytruncate

用于还在打开中的日志文件,把当前日志备份并截断,是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。

monthly

一个月轮替一次

nocompress

如果在logrotate.conf中启用了压缩,这里是做不用压缩的参数

nomail

不发送邮件到任何地址

notifempty

如果日志是空的就不轮替(也就是空日志不切割)

olddir + 目录

轮替后日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

rotate +次数

轮替最多保留之前的数据几次,超出的将被删除或邮件接收,设为0则不保存

size size

当日志增长到指定大小的时候开始轮替

weekly

如果当前的星期几比上次轮替的星期几少,或者过了一个多星期,就会发生轮替通常是在每周的第一天轮替,如果logrotate不是每天运行的,会在第一次有机会时进行轮替

yearly

如果当前年份不同于上次轮替的年份,则进行日志轮替

Missingok

如果日志丢失,不报错继续滚动下一个日志

 

六.安装配置Logrotate

#yum安装下

?
1
[root@test01 ~]# yum -y install logrotate

#机器已经装好tomcat,下面配置切割tomcat日志的配置文件

?
1
[root@test01 ~]# vim /etc/logrotate.d/tomcat

注意:logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。

日志文件的切割轮循设置在独立的配置文件中,它们是放在/etc/logrotate.d/目录下的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@test01 ~]# mkdir -p /var/log/tomcat/oldlog
 
[root@test01 ~]# cat /etc/logrotate.d/tomcat
 
/usr/local/tomcat8/logs/catalina.out { #要切割的日志路径,如果是多个就用空格分隔
 
  notifempty   #如果日志是空的就不轮替(也就是空日志不切割)
 
  rotate 5000  #轮替最多保留之前的数据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下是否有日志

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[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 15360 B
 
Handling 1 logs
 
rotating pattern: /usr/local/tomcat8/logs/catalina.out forced from command line (5000 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 5000
 
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.20181226-15点
 
compressing log with: /bin/gzip
 
set default create context to unconfined_u:object_r:usr_t:s0
 
set default create context

#查看切割结果

Logrotate实现Catalina.out日志每俩小时切割示例

#把之前切割的删除了,因为再定时切割文件是相同的,还是catalina.out.20181226-15点.gz这个文件,所以不会切割成功。

?
1
2
3
[root@test01 ~]# rm -rf /var/log/tomcat/oldlog/catalina.out.20181226-15点.gz
[root@test01 ~]# ls /var/log/tomcat/oldlog/
[root@test01 ~]#

#设置定时任务,每一分钟切割一次(注意:日志里要有内容,因为前面定义空的日志文件是不切割的)

?
1
2
[root@test01 ~]# crontab –e
*/1 * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >>/var/log/tomcat/oldlog/cutting.log

#每俩小时切割一次

?
1
2
[root@test02 ~]# crontab -l
0 */2 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /root/chenjiaxin/cutting.log

#查看定时切割的结果

Logrotate实现Catalina.out日志每俩小时切割示例

当然,上面设置一分钟切割一次,是为了实验能尽快看到效果。实际是需要根据公司需要来设置多久来切割一次日志的!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/chenzhazha/archive/2018/12/27/10185212.html

延伸 · 阅读

精彩推荐
  • LinuxLinux如何更改VirtualBox虚拟机的磁盘容量

    Linux如何更改VirtualBox虚拟机的磁盘容量

    在Linux系统使用过程中会遇到VirtualBox虚拟机磁盘空间不够用的问题,那么如何更改VirtualBox虚拟机的磁盘容量,下面为大家详细介绍下,有遇到的朋友可以看...

    系统之家8292019-10-18
  • LinuxLinux下安装或升级Python 2.7的操作方法

    Linux下安装或升级Python 2.7的操作方法

    下面小编就为大家带来一篇Linux下安装或升级Python 2.7的操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    张扬个性,敢为天下先3632022-02-20
  • LinuxFacebook Open Platform编译FAQ

    Facebook Open Platform编译FAQ

    facebook open platform在编译中会碰到一些问题,给大家汇总一下,可能不全,但基本都是我在编译中碰到的,希望对大家有帮助 ...

    互联网4812020-04-12
  • LinuxLinux安装Python3.8.1的教程详解

    Linux安装Python3.8.1的教程详解

    这篇文章主要介绍了Linux安装Python3.8.1的教程,本文以linux安装python3.8版本为例给大家详细说明,感兴趣的朋友跟随小编一起看看吧 ...

    四海飞鹰7532020-08-04
  • Linux在Linux中如何查找最大的10个文件方法汇总

    在Linux中如何查找最大的10个文件方法汇总

    这篇文章主要给大家介绍了关于在Linux中如何查找最大的10个文件的一些方法,文中分别给大家介绍了四种方法,没种方法都通过示例代码介绍的非常详细,...

    Magesh Maruthamuthu4392022-03-06
  • LinuxLinux下加强BGP路由协议安全的措施

    Linux下加强BGP路由协议安全的措施

    这篇文章主要介绍了Linux下加强BGP路由协议安全的措施,文中使用Quagga的Shell来配置相关路由,需要的朋友可以参考下...

    开源中文社区5902019-09-06
  • LinuxLinux系统中校验下载文件的完整性方法(MD5,SHA1,PGP)

    Linux系统中校验下载文件的完整性方法(MD5,SHA1,PGP)

    对文件进行MD5 Hash,求出文件的MD5哈希值,通过下载后文件MD5哈希值和发布者提供的MD5哈希值是否一致来判断文件是否在发布者发布之后被篡改过 ...

    Linux教程网4502019-11-15
  • Linux2016年如何选择Linux发行版

    2016年如何选择Linux发行版

    这篇文章主要介绍了2016年选择Linux发行版的标准和原则,挑选几个将在2016 年里大放光彩的最佳发行版给大家介绍一下,感兴趣的小伙伴们可以参考一下...

    Linux教程网12182021-11-02