क्या nginx पहुंच लॉग में प्रतिक्रिया डेटा लॉग करना संभव है?


13

मैं विकास / डीबगिंग उद्देश्यों के लिए प्रतिक्रिया डेटा प्रिंट करने का प्रयास कर रहा हूं। मुझे इस पर समान प्रश्न या कोई जानकारी नहीं मिली। यदि आप करते हैं, तो कृपया एक टिप्पणी जोड़ें।


क्या आपका मतलब कुछ इस तरह का था? stackoverflow.com/questions/4939382/…
टेलर जास्को

1
नहीं, यह अनुरोध निकाय है, लेकिन मैं प्रतिक्रिया निकाय से बाहर निकलना चाहता हूं। धन्यवाद।
vamsu

जवाबों:


11

body_filter_by_luaनिगनेक्स चर के लिए अनुरोध निकाय असाइन करने के लिए उपयोग करें , यहाँ एक उदाहरण है:

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
कोड में, हम प्रतिक्रिया चंक से पहली 1000 बाइट्स लगाते हैं और resp_body में डालते हैं अर्थात इस पंक्ति में "resp_body = string.sub (ngx.arg [1], 1, 1000)"। क्या इसके 1000 होने का कोई खास कारण है।
दून

मेरे मामले में इसकी प्रतिक्रिया मुझे नहीं दे रही है, लेकिन इसके कारण मुझे इस "resp_body:" "access_log / usr / स्थानीय / खुलेआम / nginx / लॉग / access.logupstreamlog" जैसे लॉग का रास्ता दे रहा है क्या आप कृपया सुझाव दे सकते हैं कि आप गलत हैं?
श्रीमती

3

ngx_lua मॉड्यूल का उपयोग करें

इस तरह

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

सही location


1
मुझे लगता है कि मैं उपयोग करना पसंद करूंगा ngx.DEBUG। CRIT कंसोल पर प्रिंट हो सकता है, पूरी sysadmin टीम को ईमेल किया जा सकता है, आदि ...
माइकल हैम्पटन

0

मुझे यह एक उदाहरण के लिए मिला है , और मुझे लगता है कि इको मॉड्यूल भी ऐसा कर सकता है।


2
इको मॉड्यूल और उदाहरण ने अनुरोध हेडर / बॉडी को लॉग करने के बारे में बात की है, लेकिन मैं प्रतिक्रिया बॉडी को लॉग करना चाहता हूं। धन्यवाद पीटरमोलनर।
vamsu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.