定义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格式的功能之后,对于一般应用中 埋点然后离线分析 的需求就变的更加容易做了。

最新文章

  1. 前端工程优化:javascript的优化小结
  2. POJ3368Frequent values[RMQ 游程编码]
  3. OpenStack 云计算基础知识
  4. 巧妙利用before和after伪类实现文字的展开和收起
  5. Redis 3.0.0 集群部署
  6. [python实用代码片段]python获取当前时间的前一天,前一周,前一个月
  7. 搭建appium的android环境
  8. BaseServlet方法分发
  9. 我常用的Webstorm快捷键
  10. 终端I/O之终端窗口的大小
  11. dragsort拖动排序
  12. linux netcat命令
  13. lc面试准备:Implement Stack using Queues
  14. Linux - 简明Shell编程03 - 字符串(String)
  15. JSP入门 Filter
  16. Go语言代码规范指导
  17. vue图片上传
  18. win7使用问题解决
  19. mac下mongoDB的使用
  20. bug4 导入新工程时报 Target runtime com.genuitec.runtime.generic.jee60 is not defined

热门文章

  1. hdu-1082 Matrix Chain Multiplication---栈的运用
  2. WPF绘制光滑连续贝塞尔曲线
  3. Node.js+Koa开发微信公众号个人笔记(三)响应文本
  4. JavaScript 散集合(HashArray)
  5. CARVARS 圆形进度条
  6. python的变量与赋值
  7. ognl版本错误
  8. 洛谷P2050 [NOI2012]美食节
  9. [BZOJ]4908: [BeiJing2017]开车
  10. WOJ 124. Football Coach 网络流