Chinaunix首页 | 论坛 | 博客
  • 博客访问: 609846
  • 博文数量: 142
  • 博客积分: 116
  • 博客等级: 入伍新兵
  • 技术积分: 1445
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-28 08:37
文章分类

全部博文(142)

文章存档

2017年(7)

2016年(57)

2015年(48)

2014年(30)

我的朋友

分类: LINUX

2014-12-10 18:07:28

先贴个鸟哥的链接
        syslogd :记录登录文件的服务
                     

以前叫syslogd,现在叫rsyslogd了。

配置文件:
  1. /etc/rsyslog.d/local7.conf
  2. local7.* /var/log/local7.log
好像需要重启服务才生效。
service rsyslog restart
不知kill -HUP `pgrep rsyslogd`管不管用。

写入日志:
  1. import syslog
  2. syslog.openlog('test', syslog.LOG_PID, syslog.LOG_LOCAL7)
  3. syslog.syslog(syslog.LOG_DEBUG, 'sleep1')
  4. syslog.closelog()

日志轮转:
使用logrotate命令。执行logrotate命令后,logrotate会读取配置文件,根据配置文件中设置的轮转规则,
检查日志文件,判断是否满足轮转条件。
配置文件是/etc/logrotate.conf及/etc/logrotate.d/*
  1. /etc/logrotate.d/test
  2. /var/log/local7.log {
  3.   rotate 12                     #保留最近12个日志
  4.   daily                         #每天滚动
  5.   size 100                      #达到100字节就滚动
  6.   notifempty
  7.   dateext
  8.   dateformat -%Y%m%d            #文件名后缀
  9.   copytruncate                  #把当前日志copy成备份日志并把当前文件截断。
  10. }
关于copytruncate做进一步说明。
日志轮转主要有两种方式,一种是把原文件改名,再创建一个新文件,例如
a.log       (i-node为n)
轮转后,变为
a.log       (i-node为m)
a.log.1    (i-node为n)

另一种方式,把原文件内容copy一份,生成备份文件,再把原文件截断,例如
a.log       (i-node为n)
轮转后,变为
a.log       (i-node为n, 截断为0字节)
a.log.1    (i-node为m)

当应用程序正在打开日志文件时,文件描述符不会随文件名改变而改变。
也就是说,在第一种方式(改名并创建)下,轮转后,应用程序仍然向原文件(即a.log.1)写入。
对于rsyslogd来说也是如此,所以轮转后需要执行kill -HUP `pgrep rsyslogd`通知rsyslogd重新打开日志文件。

对于第二种方式,copy需要花一点时间,而可能造成部分日志丢失。



阅读(1582) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~