OpenResty 自定义 access_log 格式
2024-10-18 16:26:15
定义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格式的功能之后,对于一般应用中 埋点然后离线分析
的需求就变的更加容易做了。
最新文章
- 前端工程优化:javascript的优化小结
- POJ3368Frequent values[RMQ 游程编码]
- OpenStack 云计算基础知识
- 巧妙利用before和after伪类实现文字的展开和收起
- Redis 3.0.0 集群部署
- [python实用代码片段]python获取当前时间的前一天,前一周,前一个月
- 搭建appium的android环境
- BaseServlet方法分发
- 我常用的Webstorm快捷键
- 终端I/O之终端窗口的大小
- dragsort拖动排序
- linux netcat命令
- lc面试准备:Implement Stack using Queues
- Linux - 简明Shell编程03 - 字符串(String)
- JSP入门 Filter
- Go语言代码规范指导
- vue图片上传
- win7使用问题解决
- mac下mongoDB的使用
- bug4 导入新工程时报 Target runtime com.genuitec.runtime.generic.jee60 is not defined