linux

logrotate实现日志分割,并提取wtmp日志

2018-11-19  本文已影响40人  lockdreamer

1、logrotate

为了使用它,主要有两个地方需要修改一下:一个是/etc/logrotate.conf,另一个是/etc/logrotate.d/下面的文件。

你既可以在logrotate.conf中直接定义如何处理你的log文件,也可以在/logrotate.d/下面针对自己的log新建一个对应的文件来定义处理log的行为。

默认的logrotate是一天运行一次,它的脚本被放在/etc/cron.daily/下面。除了cron.daily外还有cron.weekly,cron.monthly,cron.hourly等分别对应不同的频率,你可以根据自己的需要把脚本放在不同的文件夹下面。在设置外所有东西以后,别忘了使用chkconfig crond on来保证它会一直开机运行。然后就大工告成了。

补充说明:

Linux系统默认安装logrotate工具,它默认的配置文件在:

/etc/logrotate.conf

/etc/logrotate.d/

logrotate.conf 才主要的配置文件,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的缺省值。

手动强制切割日志

如果等不及cron自动执行日志轮转,想手动强制切割日志,需要加-f参数;不过正式执行前最好通过Debug选项来验证一下(-d参数),这对调试也很重要

# /usr/sbin/logrotate -f /etc/logrotate.d/nginx

# /usr/sbin/logrotate -d -f /etc/logrotate.d/nginx

logrotate命令格式:

logrotate [OPTION...]

-d, --debug :debug模式,测试配置文件是否有错误。

-f, --force :强制转储文件。

-m, --mail=command :压缩日志后,发送日志到指定邮箱。

-s, --state=statefile :使用指定的状态文件。

-v, --verbose :显示转储过程。

logrotate.conf配置:

# cat /etc/logrotate.conf

# 底下的设定是 "logrotate 的默认值" ,如果別的文件设定了其他的值,就会以其它文件的设定为主

weekly//默认每一周执行一次rotate轮转工作

rotate 4 //保留多少个日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数,0 指没有备份

create //自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志

dateext  //这个参数很重要!就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式

compress   //是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行

2、wtmp日志切割并转换格式提取

首先在/etc/logrotate.d目录下创建规则wtmp文件,注意:last,cp,chown等命令根据操作系统不同,路径也不通,需要修改,如图

lockdreamer

参数解释:

/var/log/wtmp { //仅针对 /var/log/wtmp 所设定的参数

daily     //每天一次切割,取代默认的一周

rotate 365    //保留365个日志.

create  644 root root //指定新建的日志文件权限以及所属用户和组

dateext     //使用当期日期作为命名格式

missingok    //如果日志丢失,不报错继续滚动下一个日志

sharedscripts   //运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本

postrotata

       /bin/last -f /var/log/"wtmp-`/bin/date +%Y%m%d`" >> /var/log/"new_wtmp-`/bin/date +%Y%m%d`"  //将二进制文件内容转储到新的文件

       /bin/cp  /var/log/new_wtmp-`/bin/date +%Y%m%d`   /home/aiuap/`hostname -i`-`/bin/date +%Y%m%d`   //将生成的文本文件传到/home/aiuap目录,并以主机ip加日期命名

        /bin/chown aiuap:aiuap     /home/aiuap/`hostname -i`-`/bin/date +%Y%m%d`   //修改文件属主属组

endscript

}

测试:

/usr/bin/logrotate -f /etc/logrotate.d/wtmp
/sbin/logrotate -f /etc/logrotate.d/wtmp

效果:

lockdreamer lockdreamer

操作记录:

lockdreamer
上一篇下一篇

猜你喜欢

热点阅读