centos中nginx按日期自动分割访问日志的方法
Web访问日志(access_log)记录了所有外部客户端对Web服务器的访问行为,包含了客户端IP,访问日期,访问的URL资源,服务器返回的HTTP状态码等重要信息。
一条典型的Web访问日志如下:
192.168.50.195--[17/Jun/2016:23:59:12+0800]"GET/HTTP/1.1"3040"-""Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/51.0.2704.84Safari/537.36""-"1
1、要解决问题:
当网站访问量大后,日志数据就会很多,如果全部写到一个日志文件中去,文件会变得越来越大。文件大速度就会慢下来,比如一个文件几百兆。写入日志的时候,会影响操作速度。另外,如果我想看看访问日志,一个几百兆的文件,下载下来打开也很慢。
注意:使用第三方免费的日志分析工具-日志宝,可以上传nginx、apache、iis的日志文件,它们帮助分析网站安全方面。毕竟专攻,更加专业。日志宝对上传的文件也是做了大小限制的,不超过50m。
2、日志自动切割脚本编写
nignx没有自动分开文件存储日志的机制。由于nginx它不会帮你自动分文件保存。所以,需要自己编写脚本来实现。
#!/bin/bash #Program: #Autocutnginxlogscript. #2016/6/15luozhibo #nginx日志路径/var/log/nginx/ LOGS_PATH=/var/log/nginx TODAY=$(date-d'today'+%Y-%m-%d) #echo$TODAY #移动日志并改名 mv${LOGS_PATH}/error.log${LOGS_PATH}/error_${TODAY}.log mv${LOGS_PATH}/access.log${LOGS_PATH}/access_${TODAY}.log #向nginx主进程发送重新打开日志文件的信号 kill-USR1$(cat/var/run/nginx.pid)
上面shell脚本的原理是:
先把以前的日志文件移动重命名,目的是就是备份。
3、crontab自动任务配置
直接编写vim/etc/crontab或者直接通过echo写入自动任务
echo'5923***root/var/log/nginx/nginx_log_division.sh>>/var/log/nginx/cutnginxlog.log2>&1'>>/etc/crontab
每晚23:59分自动执行计划任务 以root用户身份运行 将自动任务的执行日志(错误和正确的日志)自动写入cutnginxlog.log “命令>>2>&1”表示以追加方式将正确输出和错误输出都保存到同一个文件中
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。