सवाल डिबगिंग के लिए nginx लॉग में चर आउटपुट कैसे करें


मैं nginx का परीक्षण कर रहा हूं और लॉग फ़ाइलों में चर आउटपुट करना चाहता हूं। मैं यह कैसे कर सकता हूं और यह कौन सी लॉग फ़ाइल जाएगी (पहुंच या त्रुटि)।


63
2017-07-04 05:29


मूल




जवाब:


आप हेडरक्स वैरिएबल वैल्यू हेडर के माध्यम से भेज सकते हैं। विकास के लिए सुविधाजनक।

add_header X-uri "$uri";

और आप अपने ब्राउज़र के प्रतिक्रिया शीर्षलेखों में देखेंगे:

X-uri:/index.php

मैं कभी-कभी स्थानीय विकास के दौरान ऐसा करता हूं।

यह आपको यह बताने में भी आसान है कि उपधारा निष्पादित हो रहा है या नहीं। यह देखने के लिए कि क्या वे उपयोग कर रहे हैं, बस इसे अपने खंडों के अंदर छिड़क दें।

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
    add_header X-debug-message "A static file was served" always;
    ...
}

location ~ \.php$ {
    add_header X-debug-message "A php file was used" always;
    ...
}

तो एक यूआरएल की तरह जा रहे हैं http://www.example.com/index.php यात्रा करते समय बाद वाले शीर्षलेख को ट्रिगर करेगा http://www.example.com/img/my-ducky.png पूर्व हेडर ट्रिगर करेगा।


118
2018-03-08 19:58



ध्यान दें कि add_header काम करेगा केवल सफल अनुरोधों पर। दस्तावेज़ीकरण में कहा गया है कि इसे केवल कोड 200, 204, 301, 302 या 304 के साथ प्रतिक्रियाओं पर लागू किया जा सकता है। इसलिए, इसका उपयोग HTTP त्रुटियों को डीबग करने के लिए नहीं किया जा सकता है। - John WH Smith
आह, यह प्रतिभा है! धन्यवाद! - L0j1k
@ जॉन डब्लूस्मिथ: जैसा कि मारत ने उल्लेख किया था यह जवाब। के रूप में संस्करण 1.7.5, nginx जोड़ा एक "हमेशा" पैरामीटर सेवा मेरे add_header जो हेडर वापस करेगा, कोई फर्क नहीं पड़ता कि प्रतिक्रिया कोड क्या है। तो उदाहरण के लिए, add_header X-debug-message "A php file was used" always;, 500 त्रुटि कोड के लिए भी काम करना चाहिए। - yuvilio
सच्चा हीरो मेरी ज़िंदगी बचाई - Bernardo Vale
यह सवाल का जवाब नहीं देता है। लड़का लॉग इन करना चाहता है लॉग फ़ाइल ग्राहक के लिए नहीं। - Avamander


आप HTTP प्रतिक्रिया के रूप में एक सरल स्ट्रिंग वापस कर सकते हैं:

location /
{
    return 200 $document_root;
}

29
2018-02-21 17:39



क्या होगा यदि आप दो चर मूल्यों को वापस करना चाहते हैं? - BringBackCommodore64
स्थान पर जाकर मेरे ब्राउजर के सेव के रूप में तुरंत खुलता है (ओपेरा, क्रोमियम पर परीक्षण)। कोई प्रतिक्रिया नहीं। - BringBackCommodore64


आप का उपयोग कर कस्टम एक्सेस लॉग प्रारूप सेट कर सकते हैं log_format निर्देश जो आपके द्वारा रुचि रखने वाले चर को लॉग करता है।


15
2017-07-04 05:35



धन्यवाद, और मुझे लगता है कि एक चर को अपने आप आउटपुट करने का कोई आसान तरीका नहीं है? - lulalala
@lulalala मुझे नहीं पता कि। - mgorven
यह निर्देश में लॉग स्तर निर्धारित संभव है error_log सेवा मेरे debug इसलिए आप चर के मान और उस ब्लॉक को निष्पादित कर सकते हैं जो निष्पादित हैं। उदाहरण error_log file.log debug - Victor Aguilar
ध्यान दें कि खाली चर के रूप में दिखाए जाते हैं - लॉग में, लेकिन वास्तव में nginx कोड में खाली हैं, आपको जांच नहीं करनी चाहिए - किसी भी समय। यह कभी-कभी उपयोगकर्ताओं को भ्रमित करता है। - higuita


एक और विकल्प शामिल करना है गूंज मॉड्यूल जब आप nginx बनाते हैं, या स्थापित करते हैं OpenResty जो nginx एक्सटेंशन के समूह के साथ बंडल किया गया है (जैसे गूंज।)

फिर आप अपने कॉन्फ़िगरेशन को कथन के साथ आसानी से छिड़क सकते हैं जैसे:

echo "args: $args"

6
2017-11-21 22:30



जब मैं इसे आज़माता हूं तो यह वास्तविक पृष्ठ के आउटपुट को बाधित करने वाले सर्वर पर एक सादे पाठ फ़ाइल में बाहर निकलता है। - JaredMcAteer
वहां पर एक echo_log विकास में निर्देश। - Gajus