nginx日志中添加请求的response日志
换个新公司,做一些新鲜的事情,经过一天的琢磨,终于成功添加response日志
在nginx的日志中添加接口response的日志
由于此功能在nginx内置的功能中没有,需要安装第三方模块ngx_lua,由于此模块需要Lua语言,所以需要安装相应的Lua语言包
1. 下载安装LuaJIT
# cd /usr/local/src
# wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
# tar -xzvf LuaJIT-2.0.2.tar.gz
# cd LuaJIT-2.0.2
# make
出现如下内容表示编译成功
OK Successfully built LuaJIT
make[1]: Leaving directory `/usr/local/src/LuaJIT-2.0.2/src'
==== Successfully built LuaJIT 2.0.2 ====
# make install
出现如下内容,表示安装成功
==== Successfully installed LuaJIT 2.0.2 to /usr/local ====
2. 下载准备nginx lua模块
# cd /usr/local/src
# wget https://github.com/chaoslawful/lua-nginx-module/archive/v0.8.6.tar.gz
# tar -xzvf v0.8.6
3. 安装nginx
# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.4.2.tar.gz
# tar -xzvf nginx-1.4.2.tar.gz
# cd nginx-1.4.2
//先导入环境变量,告诉nginx去哪里找luajit
# export LUAJIT_LIB=/usr/local/lib
# export LUAJIT_INC=/usr/local/include/luajit-2.0
# ./configure --prefix=/usr/local/nginx-1.4.2 --add-module=../lua-nginx-module-0.8.6
# make -j2
# make install
4.测试安装是否成功
# cd /usr/local/nginx-1.4.2/conf/
# vi nginx.conf
lua指令方式
在server 中添加一个localtion
location /hello {default_type 'text/plain';content_by_lua 'ngx.say("hello, lua")';}
然后启动nginx
# cd /usr/local/nginx-1.4.2/sbin
# ./nginx
浏览器访问:
http://127.0.0.1/hello
显示:hello, lua
注意点:
1.注意每个模块的安装目录不能出现差错
2.如果之前通过apt-get方式安装了nginx,需要先删除nginx,因为此方式下载的软件无法编译
3.
到此说明第三方安装成功,
5.下面开始添加日志
http {log_format mylog 'response_body:$resp_body';server { #记录nginx请求返回值 lua_need_request_body on;set $resp_body "";body_filter_by_lua ' local resp_body = string.sub(ngx.arg[1], 1, 1000)ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_bodyif ngx.arg[2] thenngx.var.resp_body = ngx.ctx.bufferedend'; location / {proxy_pass http://127.0.0.1:5000;access_log /var/log/nginx/access.log mylog;}} }
到此便成功添加response日志。
如果懂Lua语言的,可以对如下代码进行修改,来更加符合自己的要求。
body_filter_by_lua ' local resp_body = string.sub(ngx.arg[1], 1, 1000)ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_bodyif ngx.arg[2] thenngx.var.resp_body = ngx.ctx.bufferedend';
日志输出时,会发现语言响应结果涉及到字符汉字的时候转为16进制导致无法识别。
部分响应日志如下:
response_body: {\x22code\x22: 404, \x22message\x22: \x22\xE8\xAF\xB7\xE6\xB1\x82\xE7\x9A\x84\xE8\xB5\x84\xE6\xBA\x90\xE4\xB8\x8D\xE5\xAD\x98\xE5\x9C\xA8\x22, \x22data\x22: {}}
可通过复制到python脚本进行解决。
str1=''' {\x22code\x22: 404, \x22message\x22: \x22\xE8\xAF\xB7\xE6\xB1\x82\xE7\x9A\x84\xE8\xB5\x84\xE6\xBA\x90\xE4\xB8\x8D\xE5\xAD\x98\xE5\x9C\xA8\x22, \x22data\x22: {}} ''' print(str1.encode('raw_unicode_escape').decode('utf-8'))
输入结果为:
{"code": 404, "message": "请求的资源不存在", "data": {}}
参考网址:
https://www.cnblogs.com/aoeiuv/p/6856056.html
http://www.ttlsa.com/nginx/nginx-modules-ngx_lua/
https://blog.csdn.net/rona_lin/article/details/45028277
转载于:https://www.cnblogs.com/rgcLOVEyaya/p/RGC_LOVE_YAYA_663days.html
nginx日志中添加请求的response日志相关推荐
- Spring Boot 2.1之后如何在启动日志中打印请求路径列表
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | http://blog.di ...
- Spring Boot 2.x基础教程:找回启动日志中的请求路径列表
如果您看过之前的Spring Boot 1.x教程,或者自己原本就对Spring Boot有一些经验,或者对Spring MVC很熟悉.那么对于Spring构建的Web应用在启动的时候,都会输出当前应 ...
- 怎样在接口地址中添加请求头参数_jmeter5.3做soap接口性能测试配置
前言 soap的格式在现有的测试中基本很难遇到了,小编也是第一次接触soap接口,在解决问题之前,也是想破脑袋,所以发表出来希望大家能少踩一点坑.首先在操作jmeter之前,我们需要将soap的报文. ...
- nginx通过lua从日志中获得请求响应体
Nginx本身可以通过$request_body变量记录请求内容,但响应内容需要通过Lua模块记录: 步骤: 1 在nginx主配置文件nginx.conf日志格式中增加 $resp_body变量; ...
- 如何查看Nginx日志中关于百度爬虫的日志记录
单独从Nginx日志文件access.log中提取出关于百度爬虫的日志记录并将其存到另一个单独的文件中.可以简单的通过Linux中的管道命令实现,如下所示: cat access.log | grep ...
- 链路日志中追踪traceId
一,使用traceId概述 平时出现问题查询日志是程序员的解决方式,日志一般会从服务器的日志文件,然后查找自己需要的日志,或者日志输出到es中,在es中进行搜索日志,可是对于目前流行的微服务或者单体服 ...
- SpringBoot切面AOP打印请求和响应日志
1.说明 Spring Boot微服务对外开放的Restful接口, 为了方便定位问题, 一般需要记录请求日志和响应日志, 而在每个接口中开发日志代码是非常繁琐的, 本文介绍使用Spring的切面AO ...
- 如何在 Windows XP 的事件查看器中查看和管理事件日志
事件查看器 在 Windows XP 中,事件是在系统或程序中发生的.要求通知用户的任何重要事情,或者是添加到日志中的项.事件日志服务在事件查看器中记录应用程序.安全和系统事件.通过 使用事件查看器中 ...
- Centos8 中如何使用journalctl分析日志
systemd 是大多数主要 Linux 发行版中的默认系统管理器,它带有一个名为"journald"的日志守护程序. systemd从系统.内核和各种服务或守护进程多个来源收集日 ...
最新文章
- blender硬表面建模渲染终极教程
- 《树莓派Python编程入门与实战(第2版)》——3.9 小结
- 《Adobe Acrobat XI经典教程》—第6课转换PPT演示文稿
- Asp.net中服务端控件事件是如何触发的(笔记)
- Internet Explorer 11:不要再叫我IE
- mysql int 长度 范围_mysql int(M) M意义 和int长度
- 初级程序员面试经典题目(大串烧 含答案)
- ANdroid8.0以上创建快捷方式
- 如何申请免费163邮箱?如何申请163邮箱账号?
- 流媒体直播点播系统方案设计
- 【kafka】Kafka 可视化工具Kafka Eagle安装和使用
- Cisco WLC9800 CWA FlexConnect with ISE
- 初学者c语言心里测试小项目
- 二十六、多线程练习题
- Scratch滚动的天空(2)
- MyBatis(九):MyBatis类型处理器(TypeHandler)详解
- Shell编程(week4_day5)--技术流ken
- 如何设计可视化搭建平台的组件商店?
- MPLS+BGP产生的数据层面的路由黑洞详解
- 【C++】visual Studio 2022 + Opencv4 + Win10 安装以及环境配置
热门文章
- 光伏行业春意盎然?一文看懂行业家底和五大趋势
- (数字IC)低功耗设计入门(六)——门级电路低功耗设计优化
- 数据结构 -- 搜索二叉树
- 雅虎对提升网站性能的最佳实践(英文)
- POJ 3133 Manhattan Wiring (插头DP)
- Android用户界面设计“.NET研究”:框架布局
- CSS实现自适应的图片背景边框代码
- 27/100. Intersection of Two Linked Lists
- cenos 下的一些常用命令及技巧收集篇
- 打开php.ini中的Safe_mode,会影响哪些函数?