nginx日志按日期分割

2020-03-03  本文已影响0人  毅巍奇诚

无需借助logrotate等日志处理工具。

配置

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

    map $time_iso8601 $logdate {
        '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
        default                       'date-not-found';
    }

    access_log /var/log/nginx/access-$logdate.log main;
    open_log_file_cache max=10;
}

open_log_file_cache

每一条日志记录的写入都是先打开文件再写入记录,然后关闭日志文件。如果日志文件路径中使用了变量为提高性能,可以使用open_log_file_cache指令设置日志文件描述符的缓存。

使用时遇到了两个问题
1.出现权限不够的问题,无法写日志,在设置中把user nginx;改为user root;或者给nginx用户log目录的写权限
2.出现错误日志:testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request,
这个问题有两个办法一个是创建/etc/nginx/html目录,另外一个就是在access_log前加上root path(path要绝对路径,是一个可用的真实目录)
设置后重启nginx就ok了

上一篇 下一篇

猜你喜欢

热点阅读