首页 > 后端开发 > php教程 > nginx 按天分割日志 nginx apache nginx php nginx rewrite

nginx 按天分割日志 nginx apache nginx php nginx rewrite

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-07-29 08:48:59
原创
989 人浏览过

nginx默认的日志是统一写到 安装目录的log下的 ,访问日志是 access.log,错误日志是error.log
而且并没有提供一个可配置的地方,对于生产环境,日志都集中在一块儿,没过几天日志文件就可以大到几个G,只能是使用操作系统的定时任务,自己写脚本定时执行,将log日志进行切割。

参考网上前辈的文章,自己写了一个脚本出来。代码如下:

<code><span>#定义日志的源路径,即nginx的默认log路径</span><span>source</span>_log_path=/usr/local/nginx/logs
<span>#定义保存后的路径位置</span>
dest_log_path=/opt/logs/nginx
<span>#定义log文件的名称,以每天为单位,定义日志的前缀为昨天的日期,因为定时任务拟在凌晨零点后执行。</span>
yesterday=$(date <span>-d</span><span>"yesterday"</span> +%Y%m%d) 
<span>#echo ${yesterday}</span><span>#rm -rf ${dest_log_path}/*</span><span>#指定移动</span>
mv <span>${source_log_path}</span>/access.log <span>${dest_log_path}</span>/nginx_access_<span>${yesterday}</span>.log
mv <span>${source_log_path}</span>/error.log  <span>${dest_log_path}</span>/nginx_error_<span>${yesterday}</span>.log 
<span>#移动后,重新向nginx的主进程发送信息,令nginx的主进程将日志重新打开。否则日志将会继续写到mv后的路径中</span>
kill -USR1 `ps axu | grep <span>"nginx: master process"</span> | grep -v grep | awk <span>'{print $2}'</span>`
<span>cd</span><span>${dest_log_path}</span><span>#进入日志的路径,查询前天前的日志,然后将其删掉。</span>
find . -mtime +<span>7</span> -name <span>"*20[1-9][3-9]*"</span> |xargs rm -rf
<span>exit</span><span>0</span></code>
登录后复制

最后,将该代码保存到一个sh文件,并将该文件加入到系统的定时任务中。

<code><span>#定时任务的文件在 /etc/crontab 下,vi此文件,设置为每天 零点 执行。</span>
0 0 <span>* *</span> * root /bin/sh /opt/sampleEnvironment/commands/nginxlogperday.sh</code>
登录后复制

代码其实并不复杂。但是在写的时候还是花费了太多时间,
遇到的问题是:在定义完变量后,比如source_log_path 执行该脚本,即会报错 command not found
到最后才发现, 我在定义 source_log_path 的时候 是这样写的 :

<code>source_log_path = <span>/usr/local</span><span>/nginx/log</span></code>
登录后复制

在等号两边均敲了一个空格,这样就导致了上面的错误。在定义日期变量的时候,也是如此。

平时使用vi命令的时候,仅仅就停留在入门的阶段,几乎不会几个命令。最多就知道“dd” 。
这次需要编辑的时候,才发现多么费劲。这次使用的比较多的命令是:

删除一行: dd
移动到行末尾: $
移动到行末尾并编辑: A (或者shift + a)
移动到文档的末尾: shift + g

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了nginx 按天分割日志,包括了nginx方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
重启nginx出错
来自于 1970-01-01 08:00:00
0
0
0
server - Nginx配置webapp问题
来自于 1970-01-01 08:00:00
0
0
0
Nginx的default.conf问题
来自于 1970-01-01 08:00:00
0
0
0
centos7 - NGINX出现异常
来自于 1970-01-01 08:00:00
0
0
0
uwsgi - 如何用nginx关联django应用
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板