Nginx修改日志时间格式

通过修改nginx源码把日志时间改为易读的年月日格式
原时间格式:[10/Apr/2019:13:45:54 +0800]
修改成格式:[2019-04-29 17:36:41]
演示版本为: nginx1.12.2
修改日志时间格式需要改动两个文件src/core/ngx_times.c和src/http/modules/ngx_http_log_module.c
一、修改src/core/ngx_times.c有7个地方要修改
1. 在47行处
static u_char cached_err_log_time[NGX_TIME_SLOTS]

                                 [sizeof("1970/09/28 12:00:00")];

修改为
static u_char cached_err_log_time[NGX_TIME_SLOTS]

                                 [sizeof("1970-09-28 12:00:00")];

Nginx修改日志时间格式

2.在51行处
static u_char cached_http_log_time[NGX_TIME_SLOTS]

                              [sizeof("28/Sep/1970:12:00:00 +0600")

修改为
static u_char cached_http_log_time[NGX_TIME_SLOTS]

                              [sizeof("1970-09-28 12:00:00")];

Nginx修改日志时间格式

3.在65行处
ngx_cached_err_log_time.len = sizeof("1970/09/28 12:00:00") - 1;
修改为
ngx_cached_err_log_time.len = sizeof("1970-09-28 12:00:00") - 1;
Nginx修改日志时间格式

4.在67行处
ngx_cached_http_log_time.len = sizeof("28/Sep/1970:12:00:00 +0600") - 1;
修改为
ngx_cached_http_log_time.len = sizeof("1970-09-28 12:00:00") - 1;
Nginx修改日志时间格式

5. 在149行
(void) ngx_sprintf(p1, "%4d/%02d/%02d %02d:%02d:%02d",
修改为
(void) ngx_sprintf(p1, "%4d-%02d-%02d %02d:%02d:%02d",
Nginx修改日志时间格式

6.在157-159行
(void) ngx_sprintf(p2, "%02d/%s/%d:%02d:%02d:%02d %c%02i%02i",

                    tm.ngx_tm_mday, months[tm.ngx_tm_mon - 1],
                    tm.ngx_tm_year, tm.ngx_tm_hour,

修改为
(void) ngx_sprintf(p2, "%4d-%02d-%02d %02d:%02d:%02d",

                  tm.ngx_tm_year, tm.ngx_tm_mon,
                  tm.ngx_tm_mday, tm.ngx_tm_hour,

Nginx修改日志时间格式
7.在232行
Nginx修改日志时间格式
修改为
Nginx修改日志时间格式
二、修改src/http/modules/ngx_http_log_module.c
在226行
{ ngx_string("time_local"), sizeof("28/Sep/1970:12:00:00 +0600") - 1,
修改为
{ ngx_string("time_local"), sizeof("1970-09-28 12:00:00") - 1,
Nginx修改日志时间格式
最后直接配置编译安装即可
最后查看日志时间变成了年月日格式
Nginx修改日志时间格式

上一篇:重置jenkins用户名密码


下一篇:zookeeper部署及集群测试