Nginx 按年月日生成日志文件

通过服务器的配置文件(.conf)来设置日志文件生成格式。

【需要了解】

$time_iso8601 是内嵌变量用来获取时间,获取的时间格式如下:2020-08-21T16:01:02+02:00。于是我们使用正则表达式来获取所需时间的详细数据。

【具体步骤】

1、按天生成日志

server
{
    # 其它配置

    if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
        set $year $1;
        set $month $2;
        set $day $3;
    }
    access_log /var/logs/7l7y/access-$year-$month-$day.log  main;
    error_log /var/logs/7l7y/error.log warn;

    # 其它配置
}

2、按时分秒生成日志

server
{
    # 其它配置

    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;
    }
    access_log /var/logs/7l7y/access-$year-$month-$day-$hour-$minutes-$seconds.log  main;
    error_log /var/logs/7l7y/error.log warn;

    # 其它配置
}

实际部署环境如下图: