Heim > Backend-Entwicklung > PHP-Tutorial > nginx 按天分割日志 nginx apache nginx php nginx rewrite

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-07-29 08:48:59
Original
989 Leute haben es durchsucht

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>
Nach dem Login kopieren

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

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

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

<code>source_log_path = <span>/usr/local</span><span>/nginx/log</span></code>
Nach dem Login kopieren

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

平时使用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教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Nginx-Lastausgleichsproblem
Aus 1970-01-01 08:00:00
0
0
0
Fehler beim Neustart von Nginx
Aus 1970-01-01 08:00:00
0
0
0
Nginx-Lastausgleich
Aus 1970-01-01 08:00:00
0
0
0
Nginx-Default.conf-Problem
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage