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


83

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

जवाबों:


143

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

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 जैसे url पर जाकर http://www.example.com/img/my-ducky.png पर जाने वाले शीर्ष लेख को ट्रिगर करेगा और पूर्व शीर्षलेख को ट्रिगर करेगा।


29
ध्यान दें कि केवल सफल अनुरोधों परadd_header काम करेगा । प्रलेखन में कहा गया है कि यह केवल कोड 200, 204, 301, 302 या 304 के साथ प्रतिक्रियाओं पर लागू किया जा सकता है। इसलिए, इसका उपयोग HTTP त्रुटियों को डीबग करने के लिए नहीं किया जा सकता है।
जॉन डब्ल्यूएच स्मिथ

31
@ जॉनोहेमिथ: जैसा कि इस उत्तर में नोट किया गया है । के रूप में संस्करण 1.7.5 , nginx एक अतिरिक्त "हमेशा" पैरामीटर के लिए add_headerजो हैडर कोई बात नहीं क्या प्रत्युत्तर कोड प्राप्त होगा। इसलिए, उदाहरण के लिए, add_header X-debug-message "A php file was used" always;500 त्रुटि कोड के लिए भी काम करना चाहिए।
युविलियो

6
इस सवाल का जवाब बिल्कुल नहीं है। आदमी क्लाइंट को नहीं लॉग फ़ाइल में लॉग इन करना चाहता है ।
अवामंदर

37

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

location /
{
    return 200 $document_root;
}

1
यदि आप दो चर मान वापस करना चाहते हैं तो क्या होगा?
ब्रैकबेकोडोर64

स्थान पर जाने से तुरंत मेरे ब्राउज़र का सेव एज़ डायलॉग खुल जाता है (ओपेरा, क्रोमियम पर परीक्षण किया गया)। कोई प्रतिक्रिया नहीं।
ब्रैकबेकोडोर64

@ SendBackCodiumore64 एक टेक्स्ट / html सामग्री प्रकार हेडर जोड़ने से मदद मिल सकती है।
बिटवाइज़

पोस्टमैन का उपयोग करना , यह बिना किसी अतिरिक्त हेडर के काम करता है। धन्यवाद!
8

19

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


2
धन्यवाद, और मुझे लगता है कि अपने आप में एक चर का उत्पादन करने का कोई आसान तरीका नहीं है?
लुललाला

@ लल्लूलाल नहीं कि मुझे पता है।
मॉर्गन

यह निर्देश में लॉग स्तर सेट संभव है error_logकरने के लिए debugताकि आप चर के मूल्य और कहा कि ब्लॉक कि अमल कर रहे हैं देख सकते हैं। उदाहरणerror_log file.log debug
विक्टर एगुइलर

1
सूचना थार खाली चर को -लॉग के रूप में दिखाया गया है , लेकिन नगण्य कोड में वास्तव में खाली हैं, आपको -किसी भी समय जांच नहीं करनी चाहिए । यह कभी-कभी उपयोगकर्ताओं को भ्रमित करता है।
हिगुइता

6

एक अन्य विकल्प इको मॉड्यूल को शामिल करना है जब आप नाज़िनक्स का निर्माण करते हैं, या ओपनरैस्टी स्थापित करते हैं जो कि नग्नेक्स को एक्सटेंशन के एक गुच्छा के साथ बंडल किया जाता है (जैसे गूंज।)

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

echo "args: $args"

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

echo_logविकास में एक निर्देश है।
गजस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.