इस ट्यूटोरियल में, हम उदाहरणों की मदद से जावा लॉगिंग और इसके विभिन्न घटकों के बारे में जानेंगे।
जावा हमें लॉगिंग की प्रक्रिया के माध्यम से लॉग संदेश और फ़ाइलों को बनाने और कैप्चर करने की अनुमति देता है।
जावा में, लॉगिंग को फ्रेमवर्क और एपीआई की आवश्यकता होती है। जावा में java.util.logging
पैकेज में निर्मित लॉगिंग फ्रेमवर्क है ।
हम Log4j, Logback जैसे कई थर्ड पार्टी फ्रेमवर्क का भी उपयोग कर सकते हैं और लॉगिंग प्रयोजनों के लिए कई और अधिक।
जावा लॉगिंग घटक
नीचे दिया गया आंकड़ा कोर घटकों और जावा लॉगिंग एपीआई ( java.util.logging
) के नियंत्रण के प्रवाह का प्रतिनिधित्व करता है ।

1. लकड़हारा
Logger
वर्ग प्रवेश के लिए तरीके प्रदान करता है। हम Logger
कक्षा से वस्तुओं को तुरंत निकाल सकते हैं और लॉगिंग उद्देश्यों के लिए इसके तरीकों को कॉल कर सकते हैं।
एक उदाहरण लेते हैं।
Logger logger = Logger.getLogger("newLoggerName");
कक्षा की getLogger()
विधि का Logger
उपयोग नए को खोजने या बनाने के लिए किया जाता है Logger
। स्ट्रिंग तर्क लकड़हारे के नाम को परिभाषित करता है।
यहां, यह एक नया Logger
ऑब्जेक्ट बनाता है या Logger
उसी नाम से मौजूदा रिटर्न देता है ।
यह Logger
वर्तमान कक्षा का उपयोग करने के बाद परिभाषित करने के लिए एक सम्मेलन है class.getName()
।
Logger logger = Logger.getLogger(MyClass.class.getName());
नोट:NullPointerException
यदि पारित नाम है तो यह विधि फेंक देगी null
।
प्रत्येक के Logger
पास एक स्तर है जो लॉग संदेश के महत्व को निर्धारित करता है। 7 मूल लॉग स्तर हैं:
लॉग लेवल (अवरोही क्रम में) | प्रयोग करें |
---|---|
गंभीर | गंभीर विफलता |
चेतावनी | चेतावनी संदेश, एक संभावित समस्या |
जानकारी | सामान्य क्रम जानकारी |
CONFIG | कॉन्फ़िगरेशन जानकारी |
ठीक | सामान्य डेवलपर जानकारी (संदेश ट्रेस कर रहा है) |
बारीक | विस्तृत डेवलपर जानकारी (संदेश ट्रेसिंग) |
फाइनल | अत्यधिक विस्तृत डेवलपर जानकारी (संदेश ट्रेसिंग) |
बंद है | सभी स्तरों के लिए लॉगिंग बंद करें (कुछ भी नहीं कैप्चर करें) |
सब | सभी स्तरों के लिए लॉगिंग चालू करें (सब कुछ कैप्चर करें) |
प्रत्येक लॉग स्तर का एक पूर्णांक मान होता है जो दो विशेष लॉग स्तरों OFF
और को छोड़कर उनकी गंभीरता को निर्धारित करता है ALL
।
संदेश लॉग कर रहा है
डिफ़ॉल्ट रूप से, शीर्ष तीन लॉग स्तर हमेशा लॉग होते हैं। एक अलग स्तर सेट करने के लिए, हम निम्नलिखित कोड का उपयोग कर सकते हैं:
logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE);
इस उदाहरण में, केवल स्तर FINE
और इसके ऊपर के स्तर को लॉग करने के लिए सेट किया गया है। अन्य सभी लॉग संदेश छोड़ दिए जाते हैं।
अब एक संदेश को लॉग करने के लिए, हम log()
विधि का उपयोग करते हैं ।
logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message");
वांछित स्तरों पर लॉगिंग के लिए आशुलिपि विधियां हैं।
logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message");
सभी लॉग अनुरोध जो सेट लॉग स्तर को पार कर चुके हैं, फिर लॉगक्रॉर्ड को भेज दिए जाते हैं ।
नोट: यदि एक लकड़हारा का स्तर निर्धारित किया जाता है null
, तो उसका स्तर उसके माता-पिता से विरासत में मिलता है और इसी तरह पेड़ पर भी।
2. फिल्टर
एक फ़िल्टर (यदि यह मौजूद है) निर्धारित करता है कि क्या LogRecord को अग्रेषित किया जाना चाहिए या नहीं। जैसा कि नाम से पता चलता है, यह विशिष्ट मानदंडों के अनुसार लॉग संदेशों को फ़िल्टर करता है।
एक LogRecord केवल लकड़हारा से लॉग हैंडलर और लॉग हैंडलर से बाहरी सिस्टम में जाता है यदि यह निर्दिष्ट मानदंड से गुजरता है।
// set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter();
3. हैंडलर (परिशिष्ट)
लॉग हैंडलर या एपेंडर्स LogRecord को प्राप्त करते हैं और इसे विभिन्न लक्ष्यों को निर्यात करते हैं।
जावा एसई 5 निर्मित हैंडलर प्रदान करता है:
हैंडलर | प्रयोग करें |
---|---|
StreamHandler | एक को लिखता है OutputStream |
ConsoleHandler | सांत्वना देने के लिए लिखता है |
FileHandler | फाइल करने के लिए लिखता है |
SocketHandler | दूरस्थ टीसीपी बंदरगाहों को लिखते हैं |
MemoryHandler | स्मृति को लिखता है |
एक हैंडलर LogRecord को फिर से यह निर्धारित करने के लिए फ़िल्टर में पारित कर सकता है कि इसे बाहरी सिस्टम में भेजा जा सकता है या नहीं।
एक नया हैंडलर जोड़ने के लिए, हम निम्नलिखित कोड का उपयोग करते हैं:
logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler);
हैंडलर निकालने के लिए, हम निम्नलिखित कोड का उपयोग करते हैं:
logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler);
एक लकड़हारे के पास कई हैंडलर हो सकते हैं। सभी हैंडलर प्राप्त करने के लिए, हम निम्नलिखित कोड का उपयोग करते हैं:
Handler() handlers = logger.getHandlers();
4. प्रारूप
हैंडलर बाहरी सिस्टम में निर्यात करने से पहले LogRecord ऑब्जेक्ट को एक स्ट्रिंग में प्रारूपित करने के लिए एक फॉर्मैटर का भी उपयोग कर सकता है ।
जावा एसई के दो अंतर्निहित प्रारूप हैं :
प्रारूपक | प्रयोग करें |
---|---|
SimpleFormatter | स्वरूप स्ट्रिंग करने के लिए LogRecord |
XMLFormatter | XML फॉर्मेट में LogRecord का प्रारूप |
हैंडलर को प्रारूपित करने के लिए हम निम्नलिखित कोड का उपयोग कर सकते हैं:
// formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter());
LogManager
LogManager वस्तु वैश्विक लॉगिंग जानकारी का ट्रैक रखता है। यह लॉगिंग कॉन्फ़िगरेशन और लकड़हारा इंस्टेंस को पढ़ता है और बनाए रखता है।
लॉग मैनेजर एक सिंगलटन है, जिसका अर्थ है कि इसका केवल एक उदाहरण त्वरित है।
लॉग मैनेजर उदाहरण प्राप्त करने के लिए, हम निम्नलिखित कोड का उपयोग करते हैं:
LogManager manager = new LogManager();
लॉगिंग के लाभ
यहां जावा में लॉगिंग के कुछ फायदे दिए गए हैं।
- कार्यक्रम के प्रवाह की निगरानी में मदद करता है
- किसी भी त्रुटि को पकड़ने में मदद करता है जो हो सकता है
- समस्या निदान और डीबगिंग के लिए समर्थन प्रदान करता है