logrotate工具搭配crontab进行日志文件切割
2020-02-02 23:01
399 查看
学习日志切割
logrotate程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。
(1)配置文件介绍
Linux系统默认安装logrotate工具,它默认的配置文件在:
/etc/logrotate.conf 主要的配置文件
/etc/logrotate.d/ 是一个目录,该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行
另外,如果 /etc/logrotate.d/ 里面的文件中没有设定一些细节,则以/etc/logrotate.conf这个文件的设定来作为默认值。
Logrotate是基于CRON(定时器)来运行的,其脚本是/etc/cron.daily/logrotate,日志轮转是系统自动完成的。
实际运行时,Logrotate会调用配置文件/etc/logrotate.conf。
可以在/etc/logrotate.d目录里放置自定义好的配置文件,用来覆盖Logrotate的缺省值。
对于某些设备每天产生巨量的日志文件,单个日志文件将非常巨大,不便管理。通过logrorate轮询把大的日志文件切割成单个100M(根据实际需要更改设置)左右的小日志文件,方便查看和导出。
在/etc/logrotate.d/目录下新建文件logcut, 把以下内容添加进去。
# vi /etc/logrotate.d/logcut
/var/log/deviceslog/*.log# 此目录根据实际情况更改,注意要和实际日志暂存目录一致。 { daily #日志文件每天正常轮询一次 size 100M # 设定设备单个日志文件的大小,当大于100M时开始切割文件。 Nocreate#切割后不建立新日志文件 rotate 55000 #日志轮询切割的次数,设置旧日志保留180天,可以根据实际需要更改。 missingok#转储出现错误不报警 copytruncate#把将日志文件内容copy到新的转储文件 notifempty #空文件不做转储 dateext #设定文件转储格式 dateformat.%Y-%m-%d-%s #转储文件格式以 .年-月-日-秒结尾 noolddir#转储到当前目录 nocompress#不压缩转储文件 sharedscripts #执行脚本 postrotate#转储后执行以下脚本。 !注意:请把postrotate命令放在prerotate命令之前(像如下顺序放置),不然可能会遇到文件转储不成功的问题。 logs_path="/var/log/deviceslog" $ 设置日志文件存储路径,此目录根据实际情况更改,注意要和实际日志暂存目录一致。 dates_folder=`date -d "today" +"%Y%m%d"` #获取当前日期 find ${logs_path}/. -maxdepth 1 -name *.log.* | while read name; do newname=$(echo ${name%%_*.*}) > /dev/null 2>&1#读取日志暂存目录的转储日志文件,取得IP地址。 mkdir -pv $newname/${dates_folder} > /dev/null 2>&1 #为各设备分别建立日志文件存储目录,按日期分类。 mv -f $newname*.log.* $newname/$dates_folder> /dev/null 2>&1 #把日志文件转移到各设备日志文件对应的日期目录 done prerotate #转储前执行以下脚本 logs_path="/var/log/deviceslog" dates_folder=`date -d "today" +"%Y%m%d"` dates_yesterday=`date -d "yesterday" +"%Y%m%d"` #获取前一日的日期 find ${logs_path}/. -maxdepth 1 -name *.log | while read name; do newname=$(echo ${name%%_*.*}) > /dev/null 2>&1 #读取暂存目录的前一日的日志文件,取得IP地址。 mkdir -pv $newname/$dates_folder> /dev/null 2>&1 #为各设备分别建立日志文件存储目录,按日期分类。 mkdir -pv $newname/$dates_yesterday> /dev/null 2>&1 #为各设备分别提前建立前一天的日志文件存储目录,按日期分类。 mv -f $newname*-${dates_yesterday}*.* $newname/${dates_yesterday} > /dev/null 2>&1 #转储前是否有前一天未做文件分割的日志,如果有则转移到对应的设备日期目录。 done endscript }
定时切割及文件索引配置
配置定时任务,设定多长时间检查日志文件大小,检查是否需要切割,以及定时建立日志文件的索引,为web 获取日志文件信息做准备。
建立文件索引存储目录:
# mkdir -pv /var/log/deviceslog/logindex
建立定时任务:
# crontab -e
#输入以下代码,保存后将为当前用户建立一个crontab文件。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO= #每5分钟检查 /etc/logrotate.d/logcut,看是否满足文件切割条件(大于100M) ,根据设备日志文件生成的速度和大小调整这个时间,确保生成的日志转储文件在100M左右。 */5 * * * * /usr/sbin/logrotate/etc/logrotate.d/logcut #每5分钟定时建立日志文件索引,并输出到logfilesindex.txt 文件 */5 * * * * find /var/log/deviceslog/. -fls /var/log/deviceslog/logindex/logindex.txt
Crontab 格式说明:
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 日志文件切割服务logrotate配置及crontab定时任务的使用
- Linux的日志文件管理工具——logrotate(linux日志切割与轮循)
- 【转】如何利用logrotate工具自动切分滚动中的日志文件
- Logrotate日志切割报错 文件不再同一个用户组下
- Apache自带日志切割工具Logrotate和maxage
- MySQL日志切割工具logrotate
- 使用 logrotate对centos中各服务程序的日志文件进行转储
- linux环境下使用logrotate工具实现nginx日志切割
- Linux使用logrotate来切割日志文件
- 使用cronolog工具给tomcat进行日志切割
- logrotate切割日志后,新的日志还是写入到老的日志文件中
- 使用logrotate工具切割MySQL日志与慢日志分析发送到邮箱
- 如何利用logrotate工具自动切分滚动中的日志文件
- 【spring boot logback】日志logback 生成日志文件在本项目下,而不在指定的日志文件目录下/指定日志文件到达最大值后不按照配置进行切割
- 利用logrotate系统工具切割tomcat日志
- 【Linux笔记】如何利用logrotate工具自动切分滚动中的日志文件
- 日志切割工具logrotate解决Tomcat catalina.out日志过大的问题
- 如何利用logrotate工具自动切分滚动中的日志文件
- linux日志切割工具 logrotate
- 利用logrotate系统工具切割tomcat日志