设为首页 收藏本站
查看: 1256|回复: 0

[经验分享] Nginx日志文件格式及切割日志文件

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-30 08:01:27 | 显示全部楼层 |阅读模式
   作为web服务器而言,日志是必不可少的也是需要经常查看的。此篇就来介绍下如何自定义Nginx中的日志格式以及使用crontab计划任务来做到每天切割一次日志文件从而做到方便管理。
        在Nginx中日志文件是由log_format这个指令来定义的,它的语法如下:

1
2
3
log_format    name    format
##    name:指的是日志格式的名称(后面调用)
##    format:设置日志具体格式的



        在Nginx中有自己默认的日志格式,如下内容:

1
2
3
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';



        默认给注释掉了,看一下解释吧。


$remote_addr客户端的ip地址(如果中间有代理服务器那么这里显示的ip就为代理服务器的ip地址
$remote_user
用于记录远程客户端的用户名称(一般为“-”)
$time_local
用于记录访问时间和时区
$request
用于记录请求的url以及请求方法
$status响应状态码
$body_bytes_sent
给客户端发送的文件主体内容大小
$http_user_agent
用户所使用的代理(一般为浏览器)
$http_x_forwarded_for
可以记录客户端IP,通过代理服务器来记录客户端的ip地址
$http_referer
可以记录用户是从哪个链接访问过来的
        有时候可能就算启用了$http_x_forwarded_for也无法获取客户端的ip地址详情请参考此篇博文:nginx 日志获取不到远程访问ip问题解决
        通过参考上述内容可以快速的定制出来一个日志格式了,就在上一次做的虚拟主机里增加吧。

0374931f47d6b025.png
        上次并没有自定义日志格式并且在限制访问的状态页面也没有启用访问日志,那就写一个吧。
1
2
3
        log_format access '$remote_addr $remote_user "$time_local" $request'
                        '$status $http_referer'
                        '"$http_user_agent" $http_x_forwarded_for';



        添加的名称为access 日志记录了ip、用户、时间、相应方法及页面、状态码、从哪个链接过来的、用户代理、如果中间有代理也从代理获取用户ip,然后将状态页面的访问日志打开并且给一个文件路径(此文件可以不存在,目录必须存在)然后在路径后面指定好我们刚才设置的名称,也将正常页面的访问日志引用自定义的日志格式。(原来是没有设置名称的,那么就为默认格式)


        定义完成后看下是否配置正确

1
nginx -t




        nginx给了一个警告信息,警告我们log_format可能使用在/usr/local/nginx/nginx.conf中的http等级下,如果要修复这个警告按照以下方法即可解决。
        将我们的自定义信息放入到nginx.conf配置文件中的http里面(一定要在虚拟主机的配置文件中删除自定义的log_format):

        再次检查即可正常使用


        将原来的access.log文件删除或者重命名,然后重读配置文件

1
2
3
cd /web/vhost/test1/logs/
mv test1.access.log access.log.bak
nginx -s reload    #重读配置文件



        然后访问下看看日志文件是否和我们自定义的内容一样:


        状态页面的访问日志里记录了ip、用户名、时间、请求方法、、访问的页面、页面状态码(由于定义的时候没有加“-”导致了效果不太好)、客户端使用的浏览器、以及代理服务器(本机访问的没有代理服务器所以就为-)

        自定义日志就结束了,接下来就是切割日志文件并且每天保存一份当天的日志文件方法如下:
        首先将原来的日志文件重命名


1
2
mv test1.access.log test1.2014-12-29.log
nginx  -s reload



        这样就可以做到日志文件的切割。如果要每天自动保存的话就要基于crontab来管理了。写个脚本吧
1
2
3
4
5
6
7
8
9
#!/bin/bash
#
#
vhost=test1   ##定义虚拟主机的目录名
log_path=/web/vhost/logs        #指定日志文件要保存位置
access_log_path=/web/vhost/${vhost}/logs    #指定access日志所在路径
mkdir -p ${log_path}/$(date -d "yesterday" +"%y")/$(date -d "yesterday" +%m)/        ## 创建日期目录,date -d "yesterday" +"%y"获取年份后面那个是获取月份
mv ${access_log_path}/${vhost}.access.log ${log_path}/$(date -d "yesterday" +"%y")/$(date -d "yesterday" +%m)/$(date -d "yesterday" +%d).${vhost}.access.log   ## 这里将访问日志文件移动到备份的目录中如:/web/vhost/logs/14/12/28.test1.access.log
nginx -s reload        ##这里我的nginx在编译的时候使用--sbin-path=/usr/sbin/nginx这个参数了所以我可以直接使用nginx如果没有使用此参数请一定要将你的nginx安装目录下的sbin目录添加至系统环境变量中。



        然后将这个脚本文件放到nginx的配置目录下添加定时计划
1
2
3
mkdir /usr/local/nginx/bin && mv logs.sh /usr/local/nginx/bin/logs.sh
crontab -e
00 00 * * * /bin/bash /usr/local/nginx/bin/logs.sh



        这样在每天的夜晚12点就会自动创建备份文件了,如果要对错误日志也每天备份的话按照上面的内容修改即可。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-39615-1-1.html 上篇帖子: Nginx相关基础配置详解 下篇帖子: 编译安装nginx 切割
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表