日志切割
随着时间推移,日志也会慢慢增加,为防止日志过大,需要做日志切割。
其中Logrotate支持按时间和大小来自动切分,以防止日志文件太大。真正内容
:当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志。
logrotate配置文件主要有:/etc/logrotate.conf
以及 /etc/logrotate.d/
这个子目录下的明细配置文件。
logrotate的执行由crond服务调用的
其中全局参数的含义如下(/etc/logrotate.conf):
说明:(全局参数)
weekly : 每周执行回滚,或者说每周执行一次日志回滚
rotate: 表示日志切分后历史文件最多保存离现在最近的多少份 [rəʊˈteɪt] 旋转
create : 指定新创建的文件的权限与所属主与群组
dateext : 使用日期为后缀的回滚文件 #可以去/var/log目录下看看
不过一般我们都会在/etc/logrotate.d/
目录下新建自己的配置文件
查看日志文件什么时候开始轮换的信息[root@localhost ~]# vi /var/lib/logrotate/logrotate.status
配置文件参数说明
1 | monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。 |
例子
需求:
/test/PluginHelper.log
日志文件过大,需要做日志切割
在/etc/logrotate.d/
下新建切割规则文件,将其命名为PluginHelper
1
[root@localhost ~]# vi /etc/logrotate.d/PluginHelper
然后写入规则
1
2
3
4
5
6/test/PluginHelper.log{ #需要切割的日志文件
weekly #至少每周执行一次
rotate 3 #日志切分后历史文件最多保存离现在最近的3份
create 0600 root root #指定新创建的文件的权限与所属主与群组
minsize 1M #文件超过1M进行回滚
}重新启动rsyslog服务
[root@localhost ~]#systemctl restart rsyslog
查看效果(强制切割)
[root@localhost ~]# logrotate -vf /etc/logrotate.d/PluginHelper
v:显示详细信息
f:强制轮循,也就是说即使轮循条件没有满足,也强制执行查看日志是否切割成功
1
2
3[root@localhost ~]# ll /test/total 0
-rw-------. 1 root root 0 Aug 22 12:26 207_PluginHelper.log
-rw-------. 1 root root 0 Aug 22 12:25 207_PluginHelper.log.1配置文件参数说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47missingok 日志切割期间产生错误将被忽略(如果日志丢失,不报错继续切割)
daily、weekly、monthly、yearly 每天、每周、每月、每年执行
create MODE OWNER GROUP 切割后指定创建新的空白文件的属性
nocreate 不建立新的日志文件
rotate N 保留N份,多余删除,不计算新建日志文件
dateext 用当前日期作为后缀命名格式(默认年月日)
dateformat .%s 配合dateext使用,紧跟在下一行出现,定义切割后的文件名,只支持%Y,%m,%d,%s
size/minsize 达到指定大小才会切割,默认单位bytes,还可以是KB和MB
compress 切割结束后,归档并使用gzip格式压缩
nocompress 解除compress参数
delaycompress 总是与compress参数一起使用,指示logrotate不要将最近的归档压缩,压缩将在下一次切割进行。
nodelaycompress 解除delaycompress参数
ifempty 即使日志为空,也执行切割
notifempty 如果日志为空,切割不执行
prerotate/endscript 在所有其他指令之前执行prerotate和endscript之间的命令。
postrotate/endscript 在所有其他指令完成后,postrotate和endscript之间的命令将被执行。
sharescripts 所有日志切割后统一执行一次脚本,如果没有配置该参数,则每个日志切割后都会执行一次脚本。
errors ADDRESS 切割时的错误信息发送到指定的Emial地址
mail ADDRESS 切割日志发送到指定的Email地址
nomail 切割日志不发送邮件
olddir DIRECTORY 切割后的日志文件放入指定目录,必须与当前日志处在同一文件系统
noolddir 切割后的日志文件与当前文件放在同一目录下
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断;先拷贝后清空,可能丢失部分日志
nocopytruncate 备份日志文件,但不截断。
项目里面的例子:
1 | xxxxxxxxxx{ |