zoukankan      html  css  js  c++  java
  • Ngnix的日志管理和用定时任务完成日志切割

    一、日志管理

      先来看看ngnix的配置文件的server段

      

      接下来我们解释一下默认格式的具体意思

        #log_format main '$remote_addr(远程IP) - $remote_user(远程用户) [$time_local](访问时间) "$request"(请求方式) '
        # '$status(状态302、404、401、403等) $body_bytes_sent(请求体 body 长度等) "$http_referer"(referer来源信息) '
        # '"$http_user_agent(用户代理)" "$http_x_forwarded_for(被转发的请求的原始IP)"';

        注:(1)http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP

          (2)日志的格式我们也可以自己定义

      我们具体看一下日志记录的信息

      Ngnix允许针对不同的server做不同的log,接下来我们自己做一个

        

      保存并退出,然后重新加载一次配置文件

           

        因为我们没开启日志格式,进入配置文件开启即可

           

      接下来重载配置文件成功,然后访问下服务器,再查看log目录下是否有kelly.log日志文件,然后在more kelly.log看是否有日志记录

    二、用定时任务完成日志切割备份

      思路:用shell写一个脚本,每到00:00:01时就把昨天的日志按日期时间格式重命名,放在相应的目录下,再用USR1信息号控制ngnix重新生成新的日志文件。

       接下来我们在/usr/local/ngnix/data目录下做实验,创建一个shell脚本,文件名为runlog.sh

      我以下图对此脚本做详细解释

      

      我附上该shell脚本源码,方便读者做测试:

    #!/bin/bash
    base_path='/usr/local/nginx/logs'
    log_path=$(date -d yesterday +"%Y%m")
    day=$(date -d yesterday +"%d")
    mkdir -p $base_path/$log_path
    mv $base_path/access.log $base_path/$log_path/access_$day.log
    #echo $base_path/$log_path/access_$day.log
    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    

      接下来做个定时任务,按指定时间自动执行此脚本(这里我是做测试,所以我每分钟执行一下这个脚本,方便看效果)

      

      

      然后查看最终效果

      

      此时,我们已经完成了用定时任务执行脚本,然后做日志切割备份。

     

     

      如果您觉得您能在此博文学到了新知识,请为我顶一个,如文章中有解释错的地方,欢迎指出。

      互相学习,共同进步!

  • 相关阅读:
    php上传文件大小限制
    phpStudy for Linux (lnmp+lamp一键安装包)
    linux 常见问题
    Cmake设置环境变量
    NSIS Installer(被NSI脚本编译出来的target)获取命令行参数
    VS2010 Command Prompt Error:Cannot determine the location of the VS Common Tools folder
    关于老驱动不能在windows 8下正常安装的问题
    去除安装程序的窗口显示(类似于后台安装)
    NSIS操作系统环境变量
    NSIS检测操作系统x64还是x86的问题。
  • 原文地址:https://www.cnblogs.com/it-cen/p/4312098.html
Copyright © 2011-2022 走看看