通过修改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")];
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")];
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;
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;
5. 在149行
(void) ngx_sprintf(p1, "%4d/%02d/%02d %02d:%02d:%02d",
修改为
(void) ngx_sprintf(p1, "%4d-%02d-%02d %02d:%02d:%02d",
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,
7.在232行
修改为
二、修改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,
最后直接配置编译安装即可
最后查看日志时间变成了年月日格式