总结:
为什么要做日志切割?
在目录下/data/logs/ 里面有很多访问日志。
用什么查看相当大存储量的访问日志呢? cat ? vi ? less? tail?
cat 会不停刷,vi 打开估计都要几分钟。
也要避免日志把磁盘写满~
当日志文件十分大时,会对查看日志带来极大麻烦,因此需要分割日志。通常按时间来切分成不同的日志。
有一个日志切割的软件 logrotate
cat 一下 logrotate软件的配置文件
weekly 表示按周切割
rotate 4
create 旧的文件改名生产一个新的文件
dateext
compress 是否要压缩(这里#注释了表示不要压缩)
include 包含了 指定文件夹下的子配置文件
/var/log/wtmp { .....} 表示针对放在wtmp这个文件夹的文件的一些配置
monthly
create 0664 root utmp —— 创建新文件的 权限 属主 属组
minsize 1M
rotate 1
针对btmp文件夹的内的规则
missingok 忽略错误
我们可以在这里定义一些nginx日志文件的规则,来方便去切割这个日志
其实yum安装的nginx情况下,在 /etc/logrotate.d 已经有一些nginx日志切割的策略了。
daily 每天
missingok 忽略错误
rotate 52 保留52个
compress 压缩
delaycompress 延迟压缩(这里延后一天压缩,比如今天才开始压缩前天的日志)
notifempty 忽略空文件,空文件不切割
create 640 nginx adm 创建回滚文件的权限 属主 属组
if XXX 是当 /var/XXX文件存在的时候,就执行下面的KILL命令。这个目的是让nginx重新载入配置文件,这样可以生成新的日志。比如说 access.log 新建成access.log.1以后,如果没有重新建access.log 那么服务将无法写入文件。
看一下nginx自带的log文件目录
这里因为把路径给改了,其实是可以写成2部分
怎么写成2部分呢?
执行新的日志分割
logrotate -v
-v 是为了可视化,知道执行了哪些步骤(因为有时候这一步意外不执行)
通过可视化,可以看到有3个目录是没有切割的
可以具体的ls看一下
如果切割成功的话,应该会有 2019-01-09 这样的时间后缀,这里明显没有,其实没切割原因是正确的,因为时间不符合要求
如果想强制切割的话 –f ,logrotate -vf
ls 看一下强制切割后的日志,已经带有时间后缀了,切割成功