Chinaunix首页 | 论坛 | 博客
  • 博客访问: 362278
  • 博文数量: 36
  • 博客积分: 570
  • 博客等级: 中士
  • 技术积分: 1042
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-08 20:53
文章分类
文章存档

2015年(1)

2014年(1)

2013年(14)

2012年(10)

2011年(10)

分类: LINUX

2013-08-29 13:07:22

1. $outchannel指令
/etc/rsyslog.conf
指令格式
$outchannel , , ,
Name:指定outchannel的名字
File_Name:指定日志存储的位置
Max_Size:日志的最大值,单位为byte
Action:当满足条件后,执行的动作,删除,移动,等
例子:

$outchannel  log_rotation, /var/log/test.log, 100000, /root/log_rotation_script
*.*   /var/log/test.log

touch /var/log/test.log

/root/log_rotation_script
#!/bin/bash
mv_date=$(date +%Y-%m-%d_%H:%M)
mv /var/log/test.log{,.$mv_date}
touch /var/log/test.log
kill -HUP `cat /var/run/syslogd.pid`

/etc/init.d/rsyslog reload
试着重启系统看看吧,因为重启系统可以获得大量的日志信息


我们还可以编写更为复杂一点儿的脚本,用于日志滚动像只保留前几次的这种,不过在rsyslog 6及以后就不支持outchannel这种方式了
linux还给我们提供了更为简便的工具,logrotate

2. logrotate
Logrotate软件包含定时任务,他会根据/etc/rotate.conf和/etc/rotated.d/中的配置文件自动的滚动日志。
logrotate.conf是全局配置文件,logrotate.d目录里是具体的某个实例配置

logrotate指令是根据以上配置去执行日志滚动的,在/etc/cron.daily目录里有一个logrotate的脚本,所以每天都会执行一次,如果我们的执行间隔要小于一天,就自己去用cron
去执行logrotate指令



具体参数可以 man 5 logrotate.conf

这里我们定义message里的err的日志进行滚动
/etc/rsyslog.conf
:msg, contains, "error"     /var/log/test_logs/msg_err.log

在/etc/logrotate.d/msg_err
/var/log/test_logs/msg_err.log {
   daily
  size 2k
  create 0644 root root
  rotate 3
  postrotate
  /bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true
 endscript
}

重新加载rsyslog,我们前面说过cron会每天才执行logrotate指令去滚动日志,我们可等不了,就自己写cron任务计划
* * * * *  /usr/sbin/logrotate /etc/logrotate.d/msg_err >/dev/null 2>&1



阅读(10318) | 评论(0) | 转发(0) |
0

上一篇:Linux 日志详解

下一篇:Linux VLAN 实验

给主人留下些什么吧!~~