很多软件都自带切割日志,比如tomcat可以按时间来命名.rsyslog可按日期生成文件,但是并不支持用"%$year%-%$month%-%$day%"这些变量来读取文件(目前版本号:rsyslog-8.17.0-1.el6.x86_64)。


那么,就要用到日志轮询logrotate。

  1. 概要,配置。

    全局配置:/etc/logrotate.conf

    局部配置:/etc/logrotate.d/ 为了便于管理,自定义的配置都放到/etc/logrotate.d/里

  2. 使用。

    创建文件tomcat-log.conf,这个文件名可以随便起,可以没有后缀。

  vi /etc/logrotate.d/tomcat-log.conf
  #tomcat里catalina.out日志路径
  /tomcat/logs/catalina.out {
  #按天执行
  daily
  #按日期保存旧文件
  dateext
  #保留10个备份
  rotate 10
  #忽略错误
  missingok
  #日志为空,则不轮询
  notifempty
  #创建指定用户和权限的文件,同时logrotate修改旧文件名
  create 644 root root
  #截断
  copytruncate
  #轮询多个文件后,但只执行一次命令postrotate脚本在压缩了日志
  sharedscripts
  postrotate
      service rsyslog restart
    endscript
  }

3.测试

 参数:-d(演练不产生实际日志,推荐)-f(强制轮询日志)

logrotate -f /etc/logrotate.d/tomcatlog.conf

 效果:

wKiom1coAaKx6EY3AAEqnDaXGgA531.jpg


参考文章:

http://linux.cn/article-4126-1.html

http://blog.csdn.net/cjwid/article/details/1690101

https://blog.linuxeye.com/313.html

http://blog.163.com/bull_linux/blog/static/2138811422013101334544349/