默认的,nginx的access.log不会自动截断,文件体积持续增长,影响系统响应速度

可以利用Linux Logrotate服务来处理access.log,对其进行截断和转储。

more

配置日志转储脚本

编辑logrotate配置目录里的nginx配置项(/etc/logrotate.d/nginx)

$ more /etc/logrotate.d/ngin

/mnt/data1/nginx/logs/*log 

    dail

    rotate 1

    missingo

    notifempt

    compres

    sharedscript

    postrotat

        /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || 

    endscrip



`

## 检查日志转储任务

logrotate是基于Crond服务的,因此需要检查Crond是否正常运

$ sudo service crond statu

crond (pid  933) is running...

## 单次调试

`$/usr/sbin/logrotate -d -f /etc/logrotate.d/nginx

配置选项说明

  • compress:通过gzip 压缩转储旧的日志 nocompress:不需要压缩时,用这个参

  • copytruncate:用于还在打开中的日志文件,把当前日志备份并截断 nocopytruncate:备份日志文件但是不截

  • create mode owner group:使用指定的文件模式创建新的日志文件 nocreate:不建立新的日志文

  • delaycompress:和 compress 一起使用时,转储的日志文件到下一次转储时才压缩 nodelaycompress:覆

  • delaycompress 选项,转储同时压缩。 errors address:专储时的错误信息发送到指定的Email 地

  • ifempty:即使是空文件也转储,这个是 logrotate 的缺省选项。 notifempty:如果是空文件的话,不转储 mai

  • address:把转储的日志文件发送到指定的E-mail 地址 nomail:转储时不发送日志文件 olddi

  • directory:转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系

  • noolddir:转储后的日志文件和当前日志文件放在同一个目录

  • prerotate/endscript:在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成

  • postrotate/endscript:在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成

  • sharedscripts:所有的日志文件都轮转完毕后统一执行一次脚本 daily:指定转储周期为每天 weekly:指定转储周期为每

  • monthly:指定转储周期为每月 rotate count:指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备

  • size size:当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB

相关链接 http://huoding.com/2013/04/21/246