nginx访问日志中的时间格式修改

Posted T

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx访问日志中的时间格式修改相关的知识,希望对你有一定的参考价值。

1.说明

默认的时间格式是:[08/Mar/2013:09:30:58 +0800],由$time_local变量表示。

我想要改成如下格式:2013-03-08 12:21:03

 

2.需要修改的文件

src/core/nginx_times.c

src/http/modules/ngx_http_log_module.c

 

首先修改ngx_http_log_module.c文件:

{ ngx_string("time_iso8601"), sizeof("1970-09-28T12:00:00+06:00") - 1,
更改后
{ ngx_string("time_iso8601"), sizeof("1970-09-28 12:00:00") - 1, 

 

然后修改nginx_times.c文件:

[sizeof("1970-09-28T12:00:00+06:00")];
更改后
[sizeof("1970-09-28 12:00:00")]; 
ngx_cached_http_log_iso8601.len = sizeof("1970-09-28T12:00:00+06:00") - 1;
更改为
ngx_cached_http_log_iso8601.len = sizeof("1970-09-28 12:00:00") - 1;
(void) ngx_sprintf(p3, "%4d-%02d-%02dT%02d:%02d:%02d%c%02d:%02d",  
                    tm.ngx_tm_year, tm.ngx_tm_mon,  
                    tm.ngx_tm_mday, tm.ngx_tm_hour,  
                    tm.ngx_tm_min, tm.ngx_tm_sec,  
                    tp->gmtoff < 0 ? - : +,  
                    ngx_abs(tp->gmtoff / 60), ngx_abs(tp->gmtoff % 60)); 
更改为
(void) ngx_sprintf(p3, "%4d-%02d-%02d %02d:%02d:%02d",  
                    tm.ngx_tm_year, tm.ngx_tm_mon,  
                    tm.ngx_tm_mday, tm.ngx_tm_hour,  
                    tm.ngx_tm_min, tm.ngx_tm_sec); 

 

3.重新编译,并使用新的时间变量

配置文件中的$time_local改为$time_iso8601即可。

 

以上是关于nginx访问日志中的时间格式修改的主要内容,如果未能解决你的问题,请参考以下文章

Nginx访问日志 Nginx日志切割 静态文件不记录日志和过期时间

增加Nginx响应时间日志配置

Nginx访问日志日志切割静态文件不记录日志和过期时间

怎么修改nginx的access.log的时间格式

logstash收集nginx访问日志

LNMP架构(nginx访问日志,Nginx日志切割,静态文件不记录访问日志)