Change to a new company and do something new. After a day of pondering, I finally successfully added the response log
Add the log of the interface response to the log of nginx
Since this function is not included in the built-in functions of nginx, the third-party module ngx_lua needs to be installed. Since this module requires Lua language, the corresponding Lua language package needs to be installed
1. Download and install 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
The following content appears to indicate successful compilation
OK Successfully built LuaJIT
make[1]: Leaving directory `/usr/local/src/LuaJIT-2.0.2/src'
==== Successfully built LuaJIT 2.0.2 ====
# make install
The following content appears, indicating that the installation was successful
==== Successfully installed LuaJIT 2.0.2 to /usr/local ====
2. Download and prepare the nginx lua module
# cd /usr/local/src
# wget https://github.com/chaoslawful/lua-nginx-module/archive/v0.8.6.tar.gz
# tar -xzvf v0.8.6
3. Install 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
//First import environment variables and tell nginx where to find 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. Test if the installation is successful
# cd /usr/local/nginx-1.4.2/conf/
# vi nginx.conf
lua command method
Add a localtion to the server
location /hello { default_type 'text/plain'; content_by_lua 'ngx.say("hello, lua")'; }
Then start nginx
# cd /usr/local/nginx-1.4.2/sbin
# ./nginx
Browser access:
http://127.0.0.1/hello
Display: hello, lua
important point:
1. Note that the installation directory of each module cannot be wrong
2. If you installed nginx through apt-get before, you need to delete nginx first, because the software downloaded in this way cannot be compiled
3.
At this point, the third-party installation is successful.
5. Start adding logs below
http { log_format mylog 'response_body:$resp_body'; server {
#Record nginx request return value 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_body if ngx.arg[2] then ngx.var.resp_body = ngx.ctx.buffered end '; location / { proxy_pass http://127.0.0.1:5000; access_log /var/log/nginx/access.log mylog; } } }
At this point, the response log has been successfully added.
If you know the Lua language, you can modify the following code to better meet your own requirements.
body_filter_by_lua ' local resp_body = string.sub(ngx.arg[1], 1, 1000) ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body if ngx.arg[2] then ngx.var.resp_body = ngx.ctx.buffered end ';
When the log is output, it will be found that when the language response result involves characters and Chinese characters, it is converted to hexadecimal and cannot be recognized.
Part of the response log is as follows:
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: {}}
Can be solved by copying to python script.
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'))
The input result is:
{ " code " : 404, " message " : "The requested resource does not exist " , " data " : {}}
Reference URL:
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