Add the response log of the request to the nginx log

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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325296753&siteId=291194637