logrotate日志转存

下面是一个简单的logrotate日志转存脚本,它会在每小时检查一次日志文件大小,如果文件大小大于3M,则将日志文件转存到一个新的文件中,并将原始日志文件压缩并重命名为历史文件。

步骤:

1、在/etc/logrotate.d目录下新建app_log 

2、在/etc/usr/local目录下创建日志转存命令及自动删除旧文件脚本log_bak.sh

cd /usr/local

vi log_bak.sh

chmod +x log_bak.sh //赋予脚本执行权限

3、创建执行脚本定时任务 crontab -e //进入定时任务编辑页面 按i进行编辑 在文件最下方加入定时任务。

/usr/local/app.log { 
hourly 
size 10M 
notifempty 
compress 
copytruncate 
olddir /var/log/app_bak/ 
dateext 
dateformat -%Y%m%d%H.%s  
missingok 
rotate 7  
create 0644 root root 
}
hourly            指定rotate周期为每天,还有weekly, monthly。  
rotate count    指定rotate日志文件保留的数量,如果没有配置这个参数,就不保留备份,设置1的话,就是保                    留1个rotate备份,10就是保留10个rotate备份。  
size size        当日志文件到达指定的大小时才转储,默认的大小单位是bytes,可以以k,M,G。比如size 10k,                  10M, 10G。  
compress        通过gzip压缩然后备份日志。     
copytruncate    把当前日志备份并截断,先拷贝原日志文件再清空,由于拷贝和清空之间有一个时间差,可能会丢失部                 分日志数据。 
notifempty                         #当日志文件为空时,不进行轮转
missingok                          #如果日志丢失,不报错继续滚动下一个日志
create mode owner group        rotate之后,创建新文件的日志文件并指定新文件的属性,比如:  
                            create 644 tomcat tomcat  
olddir directory                   #转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
dateext          使用当期日期作为命名格式,如果指定的rotate大于1,默认rotate之后的文件名是:xx.log.1,                     xx.log.2, xx.log3,如果配置dateext规则,那么rotate之后的文件名就会以日期结                     尾:xx.log.2020-04-20,xx.log.2020-04-21, xx.log.2020-04-22 
dateformat -%Y%m%d%H.%s   定义文件rotate后的文件名的日期格式,必须配合dateext使用,查了一下资料,目前只支持: %Y %m %d %H %s 这几个个参数(年,月,日,时,秒) 

这个脚本会在每小时检查一次日志文件大小,如果文件大小大于3MB,则会将日志文件复制到一个新的文件中,并压缩该文件以节省空间。然后,它会清空原始日志文件,以便开始新的日志记录。

log_bak.sh脚本命令:

#!/bin/bash 
[ ! -e /var/log/app_bak ] && mkdir /var/log/app_bak

find /var/log/app_bak/ -mtime +2 -type f -exec rm -rf {} \;   //保留最近3天的数据

将该脚本添加到crontab中,以便每小时自动执行。您可以使用以下命令将其添加到当前用户的crontab中:

crontab -e

然后,添加以下行以在每小时的第0分钟运行日志转存脚本以及日志删除脚本定时任务:

*/60 * * * * root /usr/sbin/logrotate -vf /etc/logrotate.d/app_log  //每1小时执行一次
0 1 * * * root /usr/local/log_bak.sh   //每天凌晨1点执行日志删除命令

 完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat是一个常用的Java Web应用程序服务器,它会记录大量的日志信息,而这些日志文件会不断增大,占用大量的磁盘空间。为了解决这个问题,通常需要进行日志切割和压缩,这就需要使用到logrotate工具。 logrotate是一个Linux系统下的日志文件管理工具,可以自动切割、压缩和删除日志文件,同时可以保留一定数量的历史日志文件。通过使用logrotate,可以使得Tomcat的日志文件管理更加便捷和高效。 下面是一个简单的logrotate配置文件示例,用于对Tomcat的catalina.out日志文件进行管理: ``` /home/tomcat/logs/catalina.out { daily missingok rotate 7 compress delaycompress notifempty copytruncate } ``` 解释: - `/home/tomcat/logs/catalina.out`:表示要进行管理的日志文件路径。 - `daily`:表示按照每天的时间间隔进行日志切割。 - `missingok`:表示如果日志文件不存在则忽略该文件。 - `rotate 7`:表示保留7个历史日志文件。 - `compress`:表示对切割后的日志文件进行压缩。 - `delaycompress`:表示在下一次切割时再进行压缩,避免出现压缩失败的情况。 - `notifempty`:表示如果日志文件为空则不进行切割。 - `copytruncate`:表示备份旧日志文件时,使用复制方式,同时截断原始日志文件,避免出现日志丢失的情况。 以上配置可以根据实际情况进行调整和修改。配置完成后,可以使用以下命令手动进行日志切割: ``` logrotate -f /etc/logrotate.d/tomcat ``` 其中`-f`表示强制执行,`/etc/logrotate.d/tomcat`为配置文件路径。也可以将该命令添加到定时任务中,以定期对Tomcat日志进行切割。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值