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

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

概要,配置。

全局配置:/etc/logrotate.conf

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

使用。

创建文件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
效果:

Syslog-ng+Rsyslog收集日志:logrotate日志切割、轮询_第1张图片