转:https://www.52os.net/articles/using-logrotate-manage-tomcat-logs.html

July 28, 2014

日志是Linux系统中最重要的部分之一,通过日志可以知道系统中正在发生什么或者发生过什么,极大的方便了系统管理,常见的linux发行版中都自带了logrotate程序来管理系统日志,当然logrotate也可以用来管理软件日志。使用logrotate有以下几点好处:
1.大多数系统自带,不用安装 
2.配置简单,功能很强大
3.可靠性高

我生产上就是用Logrotate来管理tomcat日志,由于生产环境上tomcat比较忙碌,每天的日志都十几G,已经到了不得不分割的程度。配置方法:

首先要配置tomcat日志的分割,然后通过指定日志分割时间。

一、配置tomcat的日志分割

在logrotate配置目录 /etc/logrotate.d/ 下新建一个名为tomcat的文件,内容为:

/opt/tomcat-7.0/logs/catalina.out{
rotate 2
copytruncate
nocompress
notifempty
missingok
nomail
noolddir
daily
dateext
}

这里参数的详细说明附在最后。

二、指定分割时间

由于logrotate是基于cronjob执行的,默认cronjob daily的定时任务执行时间是4:02分(centos 5系列),我们是要每天的日志转储成一个新文件,而不是两天的日志混在一起,所以还要修改一下cron daily的执行时间:
centos 5 系列cronjob daily执行时间是在/etc/crontab文件中配置。

59 23 * * * root run-parts /etc/cron.daily

注意时间是在每天23:59分执行,这里转储后的文件名中的日期才是正确的.

centos 6 系列daily、monthly等文件夹里面的任务已经不用crond处理,而是交给anacron处理,执行时间有延迟时间不是固定的,要自定义这些定时任务的执行时间有三种方法:

1.关闭anacron,使用crond管理daily等任务的时间

yum remove cronie-anacron
yum install cronie-noanacron

之后加上:

01 * * * * root run-parts /etc/cron.hourly
59 23 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

这样就和centos 5系列一样,可以通过修改/etc/crontab来控制定时任务执行时间了

2.编辑/etc/anacrontab文件
首先要设置RANDOM_DELAY=0和START_HOURS_RANGE=0-0,这样可以设置为每天零点执行,在将cron.daily设置成

1       0      cron.daily              nice run-parts /etc/cron.daily

看了一下anacron说明和anacrontab文件的格式,觉得这种方法可行,但是我没有测试,如果想用这种方法,请务必先测试。

3.将tomcat 文件放在其它目录,这样每天执行cron.daily时就不会分割,然后添加定时任务来分割

59 23 * * * root run-parts /usr/sbin/logrotate /root/tomcat

三、logrotate参数说明

参数名称    含义
compress 通过gzip 压缩转储以后的日志
nocompress 不压缩转储
copytruncate 打开中的日志转储
copytruncate 打开中的日志转储
nocopytruncate 备份日志文件,但是不截断
nocreate 不建立新日志
delaycompress 延迟压缩,和compress一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 转储并压缩
errors address 转储时错误信息发送指定地址
ifempty 文件为空也转储
notifempty 如果文件为空,不转储
mail address 发送转储日志到指定邮箱
nomail 转储不发邮件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 按天存储
weekly 按周存储
monthly 按月存储
rotate count 日志转存保留的前多少份,多余的会被删除
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB
extension 指定转存日志后缀名,例如 .log
dateformat 设置日志文件名日期格式默认为 %Y%m%d

参考文章:
http://blog.jikr.cn/logrotate-cut-the-web-logs/
http://abdussamad.com/archives/390-Scheduling-system-maintenance-cron-jobs-in-CentOSRHEL-6.x.html

已有 2 条评论
    1. lepig

      请教一下 logrotate参数说明中的 daily、weekly、monthly等参数具体有什么用呢?

      因为日志转存是cron跑的,那在logrotate的配置文件中设置daily、weekly等这些参数有什么意义么?

      1. willis

        如果用cron + logrotate,daily weekly 这些就没用了

使用logrotate分割tomcat日志的更多相关文章

  1. 配置分割Tomcat日志

    安装cronolog 官网下载:http://cronolog.org/usage.html ./configuremake;make install 或者 yum install cronolog ...

  2. Centos logrotate截断tomcat日志文件

    1. 设置logrotate轮转日志文件 tomcat日志目录:/usr/local/tomcat/apache-tomcat-8.5.34/logs /etc/logrotate.d/目录下创建to ...

  3. 使用logrotate分割Tomcat的catalina日志

    切割catalian日志的方式有很多种,比如shell脚本的.cronolog或者通过配置log4j等等这些都可以实现.但今天我要介绍是使用logrotate来按日期生成日志. 原文是一个外国博主的文 ...

  4. Linux系统下分割tomcat日志

    在Linux系统下,tomcat日志catalina.out并不会像window系统下,按日期进行重写备份,因此在Linux系统下会造成日志文件过大的情况,本文介绍采用 cronolog工具进行如在w ...

  5. logrotate 清理tomcat日志

    rsyslog tomcat 服务器: 192.168.32.215 input(type="imfile" File="/usr/local/apache-tomcat ...

  6. cronolog分割tomcat日志文件

    tomcat日志备份磁盘压力解决方案,使用cronolog每日生成文件uat部署操作如下,,观察两天,下周一部署生产message系统,后续根据需求部署到其它业务线 示例方案:uat—message0 ...

  7. 使用linux服务logrotate文件tomcat日志文件

    使用notepad++编辑本地文件 tomcat: /usr/tomcat/logs/catalina.out { copytruncate daily dateext nocompress miss ...

  8. cronolog切割apache和tomcat日志

    cronolog切割apache和tomcat日志 http://cronolog.org tar zxvf cronolog-1.6.2.tar.gzcd cronolog-1.6.2./confi ...

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

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

随机推荐

  1. 【Java框架型项目从入门到装逼】第四节 - 编写第一个Servlet程序

    在开始这一节之前呢,我们还需要把Tomcat配置到Eclipse中,配置的方式很简单,打开Eclipse,Window,Preferences,进入到这个页面: 将Tomcat的安装目录配置到Ecli ...

  2. 如何把kotlin+spring boot开发的项目部署在tomcat上

    本文只讲部署过程,你首先要保证你的程序能在IDE里跑起来: 先看看你的application.properties中设置的端口号与你服务器上tomcat的端口号是否一致 server.port=80 ...

  3. 再见乱码:5分钟读懂MySQL字符集设置

    一.内容概述 在MySQL的使用过程中,了解字符集.字符序的概念,以及不同设置对数据存储.比较的影响非常重要.不少同学在日常工作中遇到的"乱码"问题,很有可能就是因为对字符集与字符 ...

  4. Vue自己写组件——Demo详细步骤

    公司近期发力,同时开了四五个大项目,并且都是用Vue来做的,我很荣幸的被分到了写项目公用模块的组,所以需要将公用的部分提取成组件的形式,供几个项目共同使用,下面详细讲一下写Vue组件的具体步骤. 一. ...

  5. python3基础(一)

    1. python文件主程序入口文件一般来要申明python路径,编码信息,作者说明等: #!/usr/bin/env python # _*_ coding: utf-8 _*_ # Author: ...

  6. video 在微信中,安卓全屏和ios上如何内联播放?H5同层播放器相关接入规范

    今天在做一个分享页面的时候需要播放视屏用了video,然后各种坑开始了: <video src="http://xxx.mp4 " id="myVideo" ...

  7. wn-cli 像React组件开发一样来开发微信小程序

    项目地址:wn-cli wn-cli wn-cli 像React组件开发一样来开发微信小程序 名字由来:wn -> weapp native 取第一个字母 Install npm install ...

  8. 12、ABPZero系列教程之拼多多卖家工具 拼团提醒功能登录拼多多实现

    上篇文章已经完成了整个拼多多拼团提醒功能,本篇继续完成拼多多帐号登录,拼多多帐号登录的目的是为了获取拼团商品的SKU和订单号,便于商家备货. 以下是拼多多官方的后台登录,要实现的功能并不是直接在这里登 ...

  9. 51 nod 1297 管理二叉树

    原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1297 先是暴力加优化T了最后两个点…… 我还是来想想正解吧. ...

  10. Free Pascal初次体验(有亮点哦)

    感觉上Pascal语言写的非常有条理,和英语很像,应该是比较容易学,但是写起来真的是麻烦的要死,平时一行代码用C/C++可能就是几秒钟,用Pascal就要几分钟,Free Pascal感觉也不是很好用 ...