日期:2014-05-16  浏览次数:20856 次

linux下配置nginx按天切割日志

nginx由于轻巧和高效的设计风格,去掉了一些额外的功能,所以它不像apache那样有自动切割日志。
但是这个功能在实际项目中应用是非常重要的,日志文件如果不进行切割会随着时间的增长而变得越大越庞大。其实要实现这个功能我们只需要很简单的几句shell就能搞定了。下面我们一步一步来实际nginx按天切割日志的功能。

一、准备工作
在开始实现这个功能之前我们需要一些前提条件,那就是我们的服务器上面必须安装好了crontab服务。如果到这里你还不了解crontab是什么东西,你可以参考本站的其它文章了解crontab相关的内容然后再回到这里继续下一步的了解。

二、配置nginx的日志文件存在位置
打开nginx的配置文件,将所有的error_log和access_log的存入位置修改成存放到/var/log/nginx/today/目录里面来。

三、建立一个脚本文件,并保证这个文件有可执行的权限:
1、建立一个文件/root/log.nginx.sh(这里只是作为演示,实际上这个脚本文件你可以随意的放在哪个目录和给它取一个你喜欢的名字),在文件里面粘贴如下内容:

  1. #!/bin/bash
  2. ?
  3. declare logs_path="/var/log/nginx";
  4. declare need_delete_path=${logs_path}/$(date -d "7 days ago" "+%Y_%m_%d");
  5. declare yestoday_log_path=${logs_path