4.1 लॉगिंग स्तरों की सूची
आपने अपना प्रोग्राम लिखा, इसे सर्वर पर अपलोड किया, और फिर आपके पास तुरंत प्रश्न होने लगते हैं:
- यह कैसे सुनिश्चित करें कि
debug()
काम करते समय विधि काम नहीं करती हैproduction
? - लॉग में बहुत अधिक जानकारी है, क्या आप केवल त्रुटि संदेश छोड़ना चाहेंगे?
- आवेदन के एक भाग के लिए विस्तृत लॉग कैसे देखें?
बेशक, लॉग के रचनाकारों ने दशकों पहले एक ही चीज़ का सामना किया था। सी लैंग्वेज में इस प्रॉब्लम को कैसे सॉल्व किया गया यह मैं आपको नहीं बताऊंगा लेकिन जावा लैंग्वेज में इसे बहुत ही खूबसूरती से सॉल्व किया गया।
लॉग को जानकारी लिखने से पहले डेटा को फ़िल्टर करता है । लॉगिंग स्तर सेट करके आप लॉग के विवरण को बहुत तेज़ी से कम/बढ़ा सकते हैं। इन स्तरों का वर्णन नीचे दी गई तालिका में किया गया है:
स्तर | टिप्पणी | |
---|---|---|
1 | सभी | सभी संदेशों को लॉग करें |
2 | पता लगाना | डिबगिंग करते समय छोटा संदेश |
3 | डीबग | डिबगिंग के लिए महत्वपूर्ण संदेश |
4 | जानकारी | सरल संदेश |
5 | चेतावनी देना | केवल घातक, त्रुटि और चेतावनी लिखें |
6 | गलती | केवल त्रुटियां और घातक त्रुटियां लिखें |
7 | घातक | केवल घातक त्रुटियां लिखें |
8 | बंद | लॉग में संदेश न लिखें |
संदेशों को फ़िल्टर करते समय इन स्तरों का उपयोग किया जाता है। यदि आप लॉगिंग स्तर को पर सेट करते हैं WARN
, तो इससे कम महत्वपूर्ण सभी संदेशों को WARN
छोड़ दिया जाएगा: TRACE
, DEBUG
, INFO
। यदि आप फ़िल्टरिंग स्तर को पर सेट करते हैं FATAL
, तब भी ERROR
।
फ़िल्टरिंग में उपयोग किए जाने वाले दो और गंभीरता स्तर हैं - यह OFF
(सभी संदेशों को त्यागें) और ALL
- सभी संदेशों को लिखें (कुछ भी न छोड़ें)।
4.2 लॉग सेटअप उदाहरण
आइए एक साधारण लॉग सेटअप उदाहरण देखें। ऐसा करने के लिए, हमें log4j.properties फ़ाइल की आवश्यकता होती है, जिसे संसाधन फ़ोल्डर में रखा जा सकता है। आइए इसमें निम्नलिखित सामग्री जोड़ें:
# Root logger option
log4j.rootLogger=WARN, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
यहां पहली पंक्ति में हम लॉगिंग स्तर - सेट करते हैं WARN
। और इसका मतलब यह है कि लकड़हारे को स्थिति के साथ लिखे गए संदेशों को नजरअंदाज कर दिया जाएगा DEBUG
।INFO
- निर्दिष्ट करें कि हम किस प्रकार के एपेंडर का उपयोग करेंगे -
ConsoleAppender
- निर्दिष्ट करें कि हम लॉग कहाँ लिखेंगे -
System.out
- हम उस वर्ग को निर्धारित करते हैं जो रिकॉर्डिंग प्रारूप को नियंत्रित करेगा -
PatternLayout
- सभी संदेशों के लिए रिकॉर्डिंग प्रारूप सेट करें - दिनांक और समय
4.3 लोकप्रिय लॉगिंग गलतियाँ
और एक और महत्वपूर्ण बिंदु लॉगिंग में लोकप्रिय त्रुटियां हैं। कुछ करने के लिए इतने अधिक विकल्प नहीं हैं, लेकिन कई सामान्य गलतियों की पहचान की जा सकती है:
- बहुत अधिक लॉगिंग । आपको हर कदम पर लॉग इन नहीं करना चाहिए, जो सैद्धांतिक रूप से महत्वपूर्ण हो सकता है। एक नियम है: लॉग प्रदर्शन को 10% से अधिक नहीं लोड कर सकते हैं । अन्यथा प्रदर्शन संबंधी समस्याएं होंगी।
- सभी डेटा को एक फ़ाइल में लॉग करना । यह किसी बिंदु पर पढ़ने/लिखने में बहुत मुश्किल हो जाएगा, यह उल्लेख न करें कि कुछ प्रणालियों पर फ़ाइल आकार सीमाएं हैं।
- गलत लॉगिंग स्तरों का उपयोग करना । लॉगिंग के प्रत्येक स्तर की स्पष्ट सीमाएँ हैं, और उनका सम्मान किया जाना चाहिए। यदि सीमा अस्पष्ट है, तो आप सहमत हो सकते हैं कि किस स्तर का उपयोग करना है।
GO TO FULL VERSION