保护私人版权,尊重他人版权。转载请注明出处并附带页面链接
随着每时每刻用户都在访问,Nginx会不断地增长。然后Nginx不会自动切割日志,当日志文件越来越大当时候,不仅浪费磁盘空间,nginx的性能也会降低。
日志分割有两个方法,一:用脚本去做处理。二:用linux系统的logrotate来处理。
现在,要介绍的是用Logrotate分割。
一、Logrotate说明
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
配置 | 说明 |
---|---|
daily | 指定转储周期为每天 |
weekly | 指定转储周期为每周 |
monthly | 指定转储周期为每月 |
rotate count | 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份 |
compress | 通过gzip 压缩转储以后的日志 |
nocompress | 不做gzip压缩处理 |
create mode owner group | 轮转时指定创建新文件的属性,如create 0777 nobody nobody |
nocreate | 不建立新的日志文件 |
delaycompress | 和compress 一起使用时,转储的日志文件到下一次转储时才压缩 |
nodelaycompress | 覆盖 delaycompress 选项,转储同时压缩 |
missingok | 如果日志丢失,不报错继续滚动下一个日志 |
ifempty | 即使日志文件为空文件也做轮转,这个是logrotate的缺省选项 |
notifempty | 当日志文件为空时,不进行轮转 |
mail address | 把转储的日志文件发送到指定的E-mail 地址 |
olddir directory | 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 |
noolddir | 转储后的日志文件和当前日志文件放在同一个目录下 |
sharedscripts | 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本 |
prerotate | 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行 |
postrotate | 在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行 |
dateext | 使用当期日期作为命名格式 |
dateformat .%s | 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数 |
size(minsize) | log-size 当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem),例如 size 100M |
二、创建nginx分割文件
1 | vi /etc/logrotate.d/nginx |
编辑如下
1 | /usr/local/nginx/logs/*access.log |
解释:会按照配置文件每天运行一次,在上面指定的目录(**/usr/local/nginx/logs)查找符合格式(access.log结尾)并且大于100M的文件,将其移到/data/bk/nginx/**中,并通知nginx重新生成日志文件,最后对旧文件进行压缩。
三、运行结果
运行前
运行后