日志回滚与处理

问题:rsyslog在记录日志时候是不维护日志的  例如message maillog时间久了总会有日志文件忒大的时候

这时候会发生日志回滚:
  回滚的意思是把当前日志rename之后重启syslog 随之syslog又创建了maillog 继续运行。而rename的日志变成类似于maillog-05-07的形式。

如果需要分析syslog吐出的日志,例如监听分析maillog:
  假设rsyslog每隔一天重启一次,rsyslog重启动作导致maillog rename成 oldmaillog
此时 原来监听的maillog如果不做任何处理 那么就自然的变成监听oldmaillog这个文件,就没有任何意义。

 

  所以在系统重启rsyslog时候,紧接着需要重启你的监听程序重新监听maillog,这样才能保证maillog永远与rsyslog当前的是同步的。

  回滚操作是对日志的管理:/etc/logrotate.conf和/etc/logrotate.d/.*  

maillog配置日志回滚例子:
vim /etc/logrodate.d/maillog

/var/log/maillog {

    rotate 1000000

    create

    daily

    olddir /var/log/movename  #旧的日志记录目录

    dateext

    mail mailrotate

    maxage 365

    sharedscripts

    postrotate
        chmod -R a+r /var/log/movename
        chmod a+r /var/log/maillog
         /usr/bin/killall -HUP dovecot   #重启dovecot            
        /etc/init.d/rsyslog reload #重启rsyslog程序
        /etc/init.d/pollmaillog restart  #重启监听maillog的程序

      endscript 

}

也可以不配置你的监听程序随着rsyslog重启 :

在syslog往maillog中吐数据的同时也在往一个叫mailpipe文件中写日志,该文件是一个管道文件,rsyslog会不间断的往这个管道文件中写与maillog相同的信息,没有重启的干扰,所以可以让你的监听程序直接去监听mailpipe这个管道文件;而maillog可以用作测试。

上面提到的mailpipe文件在syslog提到:
vim /etc/rsyslog.conf  有一条配置:mail.*                                  | /tmp/mailpipe //syslog写入mailpipe在这里配置
这条配置说明了该mailpipe应该在/tmp/下面并且是一个管道文件 ,查看你的/tmp/下如果没有 手动创建一个mailpipe文件并且加上权限即可。

================12-05-14=========================

遇到的问题的dovecot.log内容被移走之后便不再有日志产生,这是每每要service dovecor restart才能继续写。这个也可以在  postrotate中加上:日志被分割之后重启dovecot:/usr/bin/killall -HUP dovecot  :强制重启 (如果用restart 只要有一个imap 活动 就会restart失败;但是-HUP不会)

你可能感兴趣的:(linux系统)