四月 30th, 2018

日志的轮转是一种日志管理策略,可以简化管理。

以/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

}

全局配置:

weekly :表示所有日志每周进行一次轮转

rotate 4 :表示所有日志默认只保留一个旧文件

create :由于旧文件被轮转了,所以新建一个日志文件来存储日志

include /etc/logrotate.d :次配置文件所在目录

 

/var/log/wtmp为局部配置:

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

}

最后可以用下这个命令:

# logrotate -v /etc/logrotate.conf

测试有没有日志需要轮转-f 强制轮转

 

Comments are closed.