Home  >  Article  >  Backend Development  >  Add the requested response log to the nginx log

Add the requested response log to the nginx log

不言
不言Original
2018-05-05 09:49:542632browse

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.conf

lua command method

Add 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
# ./nginx

Browser access:

http://127.0.0.1/hello

Display: 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 compiled

3.

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn