Nginx修改日志时间格式

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 通过修改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")];

11111

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")];

22222

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;
33333

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;
44444

5. 在149行
(void) ngx_sprintf(p1, "%4d/%02d/%02d %02d:%02d:%02d",
修改为
(void) ngx_sprintf(p1, "%4d-%02d-%02d %02d:%02d:%02d",
55555

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,

666666
7.在232行
77771
修改为
77772
二、修改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,
88888
最后直接配置编译安装即可
最后查看日志时间变成了年月日格式
time

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
应用服务中间件 nginx
nginx error日志 client intended to send too large body: 1434541 bytes 如何处理?
【8月更文挑战第27天】nginx error日志 client intended to send too large body: 1434541 bytes 如何处理?
67 6
|
2月前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
2月前
|
存储 监控 应用服务中间件
查看nginx日志文件
器性能和提高网站可用性。掌握日志文件的路径、查看方法和基本分析技能对于任何服务器管理员来说都是必备技能。
74 1
|
2月前
|
存储 Ubuntu 应用服务中间件
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
20 4
|
2月前
|
存储 应用服务中间件 nginx
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
|
2月前
|
应用服务中间件 Linux nginx
Nginx log 日志文件较大,按日期生成 实现日志的切割
Nginx log 日志文件较大,按日期生成 实现日志的切割
322 0
|
2月前
|
应用服务中间件 nginx
[nginx]日志中记录自定义请求头
[nginx]日志中记录自定义请求头
|
2月前
|
应用服务中间件 Shell nginx
shell分析nginx日志的一些指令
shell分析nginx日志的一些指令
|
2月前
|
应用服务中间件 Shell Linux
使用logrotate定期切割nginx日志
使用logrotate定期切割nginx日志
|
应用服务中间件 Apache nginx
nginx自己写日志切割脚本
转自本人的博客:http://blog.teier.cn
1486 0