http.FileServer का उपयोग करके स्थिर फ़ाइलों की सेवा करते समय, जब किसी फ़ाइल के लिए अनुरोध किया जाता है तो लॉग करना अक्सर महत्वपूर्ण होता है जो नहीं करता है अस्तित्व। जबकि http.FileServer स्वयं ऐसी लॉगिंग प्रदान नहीं करता है, इसकी कार्यक्षमता का विस्तार आपको इस लक्ष्य को प्राप्त करने की अनुमति देता है।
http.StripPrefix और http.FileServer द्वारा लौटाए गए हैंडलर को लपेटने के लिए, एक नया http.Handler या http बनाएं। हैंडलरफनक। रैपर रैप किए गए हैंडलर को कॉल करेगा और परिणामी HTTP प्रतिक्रिया स्थिति कोड का निरीक्षण करेगा। यदि यह एक त्रुटि (विशेष रूप से HTTP 404 नहीं मिला) इंगित करता है, तो यह ईवेंट लॉग कर सकता है।
चूंकि http.ResponseWriter प्रतिक्रिया स्थिति कोड को पढ़ने का समर्थन नहीं करता है, इसलिए इसके लिए एक रैपर बनाएं (StatusRespWr)। लिखे जाने पर यह रैपर स्टेटस कोड को संग्रहीत करेगा। { वापसी func(w http.ResponseWriter, r *http.Request) { srw := &StatusRespWr{ResponseWriter: w} h.ServeHTTP(srw, r) यदि srw.status >= 400 {// 400 कोड त्रुटि कोड हैं log.Printf("त्रुटि स्थिति कोड: %d पथ प्रस्तुत करते समय: %s", srw.status, r.RequestURI) } } }
मुख्य फ़ंक्शन फ़ाइल सर्वर बना सकता है, उसे लपेट सकता है, और उसे पंजीकृत कर सकता है:
func wrapHandler(h http.Handler) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
srw := &StatusRespWr{ResponseWriter: w}
h.ServeHTTP(srw, r)
if srw.status >= 400 { // 400 codes are error codes
log.Printf("Error status code: %d when serving path: %s",
srw.status, r.RequestURI)
}
}
}
गैर-मौजूदा फ़ाइल का अनुरोध करते समय, कंसोल में निम्नलिखित आउटपुट उत्पन्न होगा:
2015/12/01 11 :47:40 त्रुटि स्थिति कोड: 404 पथ प्रस्तुत करते समय: /o/sub/b.txt2
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3