Có thể đăng nhập dữ liệu phản hồi trong nhật ký truy cập nginx?


13

Tôi đang cố gắng in dữ liệu phản hồi cho mục đích phát triển / gỡ lỗi. Tôi không thể tìm thấy một câu hỏi tương tự hoặc bất kỳ thông tin về điều này. Nếu bạn làm, xin vui lòng thêm một nhận xét.


Bạn có ý nghĩa gì đó như thế này? stackoverflow.com/questions/4939382/
Mạnh

1
Không. Đó là cơ quan yêu cầu nhưng tôi muốn nhổ ra cơ quan phản hồi. Cảm ơn.
vamsu

Câu trả lời:


11

Sử dụng body_filter_by_luađể gán thân yêu cầu cho biến nginx, đây là một ví dụ:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    log_format log_req_resp '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent" $request_time req_body:"$request_body" resp_body:"$resp_body"';

    server {
        listen 8082;
        access_log logs/access.log log_req_resp;

        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 / {
            echo "Hello World!";
        }
    }
}

1
Trong mã, chúng tôi dường như đặt 1000 byte đầu tiên từ khối phản hồi và đưa vào resp_body tức là trong dòng này "resp_body = string.sub (ngx.arg [1], 1, 1000)". Có lý do cụ thể nào cho việc này là 1000.
doon

Trong trường hợp của tôi, nó không cung cấp cho tôi phản hồi nhưng nó cho tôi đường dẫn nhật ký như thế này "resp_body:" "access_log / usr / local / openresty / nginx / log / access.logupstreamlog" Bạn có thể đề nghị điều gì sai không?
SMT

3

sử dụng mô đun ngx_lua

như thế này

body_filter_by_lua 'ngx.log(ngx.CRIT,ngx.arg[1])';

ở bên phải location


1
Tôi nghĩ rằng tôi muốn sử dụng ngx.DEBUG. CRIT có thể được in ra bảng điều khiển, gửi qua email cho toàn bộ nhóm sysadmin, v.v ...
Michael Hampton

0

Tôi đã tìm thấy cái này chẳng hạn , và tôi nghĩ mô-đun echo cũng có thể làm được.


2
Mô-đun echo và ví dụ được cung cấp nói về việc ghi nhật ký / phần thân yêu cầu nhưng tôi muốn đăng nhập phần thân phản hồi. Cảm ơn petermolanar.
vamsu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.