nginx 直接在配置文章中设置日志分割

直接在nginx配置文件中,配置日志循环,而不需使用logrotate或配置cron任务。需要使用到$time_iso8601 内嵌变量来获取时间。$time_iso8601格式如下:2015-08-07T18:12:02+02:00。然后使用正则表达式来获取所需时间的数据。

按天分割日志

使用下面的代码块

也可以使用Perl语法来捕获,如下:

按时、分、秒分割

非常方便的进行日志分割。建议按小时分割日志,方便分析查询日志。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:21   其中:访客  21   博主  0

  1. 匿名 5

    经过一天的战斗,终于把问题解决了,如果没有日志,请把log目录的权限更改一下,就能使用,非常有效,谢谢楼主

  2. 匿名 5

    重启之后会自动生成日志吗?我的nginx语法过了,重启没问题,就是没日志

  3. elk 5

    set $currentDate ‘day’;
    access_by_lua ‘
    ngx.var.currentDate = os.date(“%Y-%m-%d”)
    ‘;
    access_log /data/logs/nginx/www.ttlsa.com-$currentDate-access.log;

    大伙这个这么来做

  4. diorch 5

    error.log可以配置吗?

  5. 4

    #pid logs/nginx.pid;

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

    access_log /usr/local/nginx/logs/$year-$month-$day-access.log;

    events {
    是这样写的。然后报nginx的配置文件语法错误

    • diorch 5

      @ 我自己写也不对,然后直接copy->paste 通过语法检查了

      • 4

        @diorch 你这个配置文件最后写对了没

        • ttlsa粉丝 5

          @ 不要用这个了。

  6. 4

    按照版主所说的,但是报错。nginx: [emerg] “if” directive is not allowed here in /usr/local/nginx/conf/nginx.conf:10 这个是不是要写到哪里配置

    • 默北 5

      @ 语法错误

      • 4

        @默北 但是我是按照这个文档操作的。还是报错误。我想问下这个是一个模块还是?需不需要重新编译下

        • 默北 5

          @ 咋配置的。 看你错误信息,是if用法不对

    • 我的舍友是条狗 5

      @ 这个配置是 要写到server{ }模块下的

  7. awq9527 5

    牛逼,亲测成功。要是gunicorn也能有这种能力就好了

  8. 凉白开 3

    确实不可用~

  9. 卷毛 1

    感觉还是logrotate方便 :-)

  10. SHEAN 0

    表示配置未生效呢!

  11. wayne 0

    表示也没有生效呢?

  12. Will 0

    然后试了一下,并不能这样用。没有生效。 :sad:

    • 凉白开 5

      @Will 可以考虑先创建好目录,比如2015年的都先创建好~

  13. Apple 0

    在这里能自动创建新目录么?如果能这样的话,自动归到按日建的目录下就更完美了。