OpenResty 自定义 access_log 格式,
OpenResty 自定义 access_log 格式,
定义access log的format是 Nginx已经提供的功能,有了 ngx_lua 之后就可以更灵活的记录请求相关的信息,而不仅仅拘泥于 Nginx的内置变量了,可以自定义一些格式和变量来存储结构化的数据,这样做离线的统计更加方面一些。 当然也可以通过or的 cosocket完成日志的实时收集和处理,可以参照 lua-resty-logger-socket 来实现。
思路
需求是根据当前的请求记录一些nginx内置的维度,还有一些需要用lua解析之后记录,格式类似 CSV
1、 定义一个nginx的log format,预留一个自定义变量A
2、 在location块内,定义变量A,并在lua代码中赋值
代码清单
nginx代码片段
log_format myformat '$msec,"$myinfo"';
http {
server {
listen 80 default_server;
server_name localhost;
location ~ /log {
set $myinfo '"-"';
access_log logs/test.log myformat;
content_by_lua_block {
ngx.var.myinfo = "my,custom,info"
}
}
}
}
测试
liuzhizhi@lzz-rmbp|logs # curl 'http://127.0.0.1/log'
liuzhizhi@lzz-rmbp|logs # tail test.log
1479286833.147,"my,custom,info"
有了这种自定义log格式的功能之后,对于一般应用中 埋点然后离线分析
的需求就变的更加容易做了。
评论暂时关闭