Home > Article > Backend Development > Add the requested response log to the nginx log
This article mainly introduces the response log of adding requests in the nginx log. It is very good and has reference value. Friends who need it can refer to it.
Since this function is not included in the built-in function of nginx, it is required. Install the third-party module ngx_lua. Since this module requires Lua language, you need to install the corresponding Lua language package
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, indicating 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 successful installation
==== Successfully installed LuaJIT 2.0.2 to /usr/local ====
2. Download and prepare 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 //先导入环境变量,告诉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. Test whether the installation is successful
# cd /usr/local/nginx-1.4.2/conf/ # vi nginx.conflua command methodAdd a localtion in 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 # ./nginxBrowser access: http://127.0.0.1/helloDisplay: hello, lua
Notes:
1. Pay attention to the installation directory of each module without errors 2. If you have passed apt- nginx is installed by get method, you need to delete nginx first, because the software downloaded by this method cannot be compiled3.This means that the third-party installation is successful,5. Start adding the log below
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_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; } } }The response log has been successfully added. If you know Lua language, you can modify the following code to better meet your 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, you will find that when the language response result involves Chinese characters, they are 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": {}}
The above is the detailed content of Add the requested response log to the nginx log. For more information, please follow other related articles on the PHP Chinese website!