读书人

透过修改源码来更改nginx的日期格式

发布时间: 2013-03-12 11:19:35 作者: rapoo

通过修改源码来更改nginx的日期格式
前言 群里有朋友想切换nginx 0.7的版本到1.2+的版本,在0.7的版本中他们改了源码,使得访问日志输出的时间格式从[08/Mar/2013:09:30:58 +0800]变成了2013-03-08 12:21:03。说是在修改1.2+版本的时候格式就变乱了,格式一直不对,刚好有人@我,我说就帮忙看下。须知 nginx log日志格式的话,无非是在src/core/nginx_times.c和src/http/modules/ngx_http_log_module.c 这两个文件中做修改。 nginx.conf 的默认日志格式中的时间格式使用$time_local去指定的,这是刷到acces.log中的时间格式是[08/Mar/2013:09:30:58 +0800]日期格式更改 一.去下了个目前最新稳定版 nginx-1.2.7 ,打开nginx_http_log_module.c 查找到time_local,可以看到

   (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);

ok,重新编译,启动,curl "localhost",查看acees.log 就可以看到
127.0.0.1 - - 2013-03-08 12:21:03 "GET / HTTP/1.1" 200 612
总结 一般很少去改动nginx源码,基本做开发也只是做nginx的http模块,这也是难得一次经验,还比较顺利。


读书人网 >其他相关

热点推荐