Logrotate初使用

April 21, 2013 14:35


一直以来都没管程序的log,不知不觉log文件已经有1.2G了,然后回头想查log日志时, 略麻烦,于是开始求助于logrotate功能

使用logrotate可以使得日志按不同的时间点分开存放不同的文件中,自动备份,以减小日志文件大小等, 好处多的就不用说了,它甚于cron,通过系统cron定时执行logrotate脚本(/etc/logrotate.conf), 在logrotate.conf脚本中会include /etc/logrotate.d 目录中所朋的logrotate配置, logrotate脚本重命令当前log文件,然后创建一个空的log文件在原处

可以说logrotate.conf就是一个全局默认配置,而logrotate.d中存放各个应用的配置, 虽然可以在logrotate.conf中加入任务,但如此一来每个应该都来改这个文件就太乱了, 所以最好还是在logroate.d中建立自己的logrotate配置,下面来说一上logrotate的语法

# /etc/logrotate.d/my_test_log

/path/to/my_test_log {
  monthly
  rotate 1
  create 0664 root utmp
}
/path/to/my_log {
  weekly
  rotate 4
  create
  minsize 100M
  compress
}

在上面的脚本中,minsize指定了当log达到这个大小才会进行rotate,忽略了时间参数, compress 说明rorate的log会被压缩 另外还有一个脚本:

/path/to/logfile {
  weekly
  minsize 10M
  create

  sharedscripts
  prerotate
    services myservice stop
  endscript

  sharedscripts
  postrotate
    services myservice start
  endscript
}

prerotate是在rotate之前执行,postrotate则在rotate之后执行, 中间的便是bash脚本,在这里可以先停止某些服务闵、应用,rotate之后再启动

Comments: