日志的轮转是一种日志管理策略,可以简化管理。
以/var/log/messages日志文件为例:
先分四步讲解下轮转的过程。
1.系统只有messages文件,还没有轮转
touch messages
2.第一次轮转生成messages.1
mv messages messages.1
touch messages
3.第二次轮转生成messages.2
mv messages.1 messages.2
mv messages messages.1
touch messages
4.第三次轮转生成messages.3
mv messages.2 messages.3
mv messages.1 messages.2
mv messages messages.1
toouch messages
这样日志达到一定条件就会这样不断生成新的文件,可以看出,日志的轮转其本质就是旧文件的移动和新文件的创建。
----------------------------------------------------------------------
日志的轮转其主配置文件为/etc/logrotate.conf
[root@localhost ~]# cat /etc/logrotate.conf|grep -v ^# |grep -v ^$
weekly
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
monthly :表示所有日志每周进行一次轮转
minsize 1M :轮转日志的最小大小
create 0664 root utmp :创建文件时,指定权限、属主和属组
rotate 1 :保留一个旧文件
这全局配置和局部配置就类似C++中类的继承。
----------------------------------------------------------------------
自定义日志轮转:
自定义日志轮转前要了解下面几个命令:
需要执行的外部命令放在sharedscripts和endscript两行之间
prerotate : logrotate命令运行前执行脚本内容
postrotate:logrotate命令运行后执行脚本内容
----------------------------------------------------------------------
下面说个实例:
配置/var/log/mytest.log日志文件记录所有日志,并加上高级权限a;
echo "*.info /var/log/mytest.log">>/etc/syslog.conf
/etc/init.d/syslog restart
chattr +a /var/log/mytest.log
轮转配置
vim /etc/logrotate.d/mytest
/var/log/mytest.log{
mothly
size=10M
rotate 5
compress 压缩保存
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/mytest.log
endscripts
sharedscripts
postrotate
/usr/bin/kill -HUP syslog 以HUP方式从新加载服务,相当于从新读取配置文件,不改变进程id号
/usr/bin/chattr +a /var/log/mytest.log
endscripts
}
最后可以用下这个命令:
[root@localhost logrotate.d]# logrotate -v /etc/logrotate.conf 测试有没有日志需要轮转 -f 强制轮转