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`
    

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

    然后查看最终效果

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

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

    互相学习,共同进步!

  • 相关阅读:
    NTP on FreeBSD 12.1
    Set proxy server on FreeBSD 12.1
    win32 disk imager使用后u盘容量恢复
    How to install Google Chrome Browser on Kali Linux
    Set NTP Service and timezone on Kali Linux
    Set static IP address and DNS on FreeBSD
    github博客标题显示不了可能是标题包含 特殊符号比如 : (冒号)
    server certificate verification failed. CAfile: none CRLfile: none
    删除文件和目录(彻底的)
    如何在Curl中使用Socks5代理
  • 原文地址:https://www.cnblogs.com/out8/p/4342101.html
Copyright © 2011-2022 走看看