zoukankan      html  css  js  c++  java
  • 使用Linux自带的命令logrotate对Nginx日志进行切割

    说明:

    Nginx安装目录:/usr/local/nginx/
    Nginx日志目录:/var/log/nginx/error/*.log /var/log/nginx/access/w1/*.log /var/log/nginx/access/w2/*.log /var/log/nginx/access/w3/*.log

    nginx配置文件:nginx.conf


    user  www www;

    .......

    error_log  /var/log/nginx/error/error.log error;


    http {
    ......

        log_format  main  '$server_name $remote_addr - $remote_user [$time_local] "$request"
                                  '$status $body_bytes_sent "$http_referer" '
                                  ' "$http_user_agent" "$http_x_forwarded_for" "$request_time" ';

        access_log  logs/access.log  main;

     .......

        server {      

    ......


            access_log  /var/log/nginx/access/w1/access.log  main;
        }

    include /usr/local/nginx/conf/vhost/*.conf;
    }

    其他站点只需要在server内增加 access_log  /var/log/nginx/access/w2/access.log  main; 即可,
    然后在相应的日志路径建文件夹并授权www

    1、添加nginx日志切割脚本
    cd  /etc/logrotate.d  #进入目录
    vi   /etc/logrotate.d/nginx   #编辑脚本

    /var/log/nginx/error/*.log /var/log/nginx/access/w1/*.log /var/log/nginx/access/w2/*.log /var/log/nginx/access/w3/*.log{
    daily
    rotate 15
    missingok
    notifempty
    dateext
    compress
    delaycompress
    create 600 www www
    sharedscripts
    postrotate
        if [ -f /usr/local/nginx/logs/nginx.pid ]; then
            kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
        fi
    endscript
    }
    :wq!  #保存退出
    chmod 644  /etc/logrotate.d/nginx  #添加执行权限

    说明:

    ```bash

        if [ -f /usr/local/nginx/logs/nginx.pid ]; then
            kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
        fi

    可以使用kill -USR1 $(ps aux | grep nginx | grep master | awk '{print $2}')  暂不推荐使用这种方式。。。

    ```


    2、执行脚本
    /usr/sbin/logrotate -vf  /etc/logrotate.d/nginx


    3、添加定时任务
    crontab  -e  #添加以下代码
    0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx  #每天凌晨定时执行脚本


    至此,Linux下nginx日志每天定时切割教程完成。

    备注:logrotate相关参数说明
    missingok:忽略错误,如“日志文件无法找到”的错误提示。
    dateext:切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号
    notifempty:如果日志文件为空,不执行切割。
    daily:按天切割日志。可用值月:monthly 周:weekly 年:yearly
    rotate 7:保留最近7天的日志记录
    sharedscripts:只为整个日志组运行一次的脚本
    postrotate和endscript:里面指定的命令将被执行。
    compress::在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
    delaycompress::总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
    create 644 www www: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。




  • 相关阅读:
    day 66 crm(3) 自创组件stark界面展示数据
    day 65 crm(2) admin源码解析,以及简单的仿造admin组件
    用 Python+nginx+django 打造在线家庭影院
    django -admin 源码解析
    day 64 crm项目(1) admin组件的初识别以及应用
    云链接 接口不允许 情况 解决方法 mysql Host is not allowed to connect to this MySQL server解决方法
    day 56 linux的安装python3 ,虚拟环境,mysql ,redis
    day55 linux 基础以及系统优化
    Codeforces 989 P循环节01构造 ABCD连通块构造 思维对云遮月参考系坐标轴转换
    Codeforces 990 调和级数路灯贪心暴力 DFS生成树两子树差调水 GCD树连通块暴力
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/6077247.html
Copyright © 2011-2022 走看看