zoukankan      html  css  js  c++  java
  • nginx 直接在配置文章中设置日志分割

    只需要在server配置中,配置一个脚本即可,目前这个是定义了日,可以定义到分。
    set多添加几个参数即可

    server {
    listen 80 default_server;
    root "/app/www/public";
    if ($time_iso8601 ~ "^(d{4})-(d{2})-(d{2})T(d{2}):(d{2}):(d{2})") {
    set $year $1;
    set $month $2;
    set $day $3;
    }
    access_log /app/logs/api-access-$year-$month-$day.log main;
    error_log /app/logs/api-error.log;
    # Php files
    location ~ .php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php-fpm7.sock;
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    直接在nginx配置文件中,配置日志循环,而不需使用logrotate或配置cron任务。需要使用到timeiso8601内嵌变量来获取时间。 time_iso8601 内嵌变量来获取时间。time
    i

    so8601内嵌变量来获取时间。time_iso8601格式如下:2015-08-07T18:12:02+02:00。然后使用正则表达式来获取所需时间的数据。

    按天分割日志
    使用下面的代码块

    if ($time_iso8601 ~ "^(d{4})-(d{2})-(d{2})") {
    set $year $1;
    set $month $2;
    set $day $3;
    }

    access_log /data/logs/nginx/www.ttlsa.com-$year-$month-$day-access.log;

    1
    2
    3
    4
    5
    6
    7
    8
    也可以使用Perl语法来捕获,如下:


    if ($time_iso8601 ~ "^(?<year>d{4})-(?<month>d{2})-(?<day>d{2})") {}

    access_log /data/logs/nginx/www.ttlsa.com-$year-$month-$day-access.log;

    1
    2
    3
    4
    5
    按时、分、秒分割

    if ($time_iso8601 ~ "^(d{4})-(d{2})-(d{2})T(d{2}):(d{2}):(d{2})")
    {
    set $year $1;
    set $month $2;
    set $day $3;
    set $hour $4;
    set $minutes $5;
    set $seconds $6;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    非常方便的进行日志分割。建议按小时分割日志,方便分析查询日志。

  • 相关阅读:
    js学习---常用的内置对象(API)小结 :
    js第四天学习小结:
    学习js第三天小结
    学习js第二天小结
    tomcat+redis会话共享
    linux文件归档脚本
    服务器群秒级别文件同步(ssh+SHELL)
    elasticsearch的索引自动清理及自定义清理
    ELK安装配置
    Logstash自带正则表达式
  • 原文地址:https://www.cnblogs.com/ExMan/p/11151138.html
Copyright © 2011-2022 走看看