जावा अनुप्रयोगों में लॉगिंग: शुरुआती लोगों के लिए सर्वोत्तम अभ्यास

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावा लॉगिंग का परिचय

\n

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

\n

खराब लॉगिंग तब होती है जब आप System.out.println("यहाँ त्रुटि है") लिखते हैं। अच्छी लॉगिंग महत्व स्तर, समय और संदर्भ के साथ संरचित प्रविष्टियाँ हैं। आइए सही तरीके से करना सीखें।

\n\n

लॉगिंग के लिए मुख्य लाइब्रेरीज़

\n

जावा में कई मानक और तृतीय-पक्ष समाधान मौजूद हैं। आइए तीन सबसे लोकप्रिय विकल्पों पर नज़र डालें।

\n\n

Java Util Logging (JUL)

\n

बिल्ट-इन लाइब्रेरी जो JDK के साथ आती है। नुकसान - सीमित लचीलापन। उपयोग का उदाहरण:

\n
import java.util.logging.Logger;\nimport java.util.logging.Level;\n\npublic class JULExample {\n    private static final Logger logger = Logger.getLogger(JULExample.class.getName());\n\n    public static void main(String[] args) {\n        logger.info("एप्लिकेशन शुरू हुआ");\n        logger.warning("यह एक चेतावनी है");\n        logger.severe("गंभीर त्रुटि");\n    }\n}
\n\n

Log4j 2

\n

सबसे शक्तिशाली और लोकप्रिय लाइब्रेरीज़ में से एक। यह एसिंक्रोनस लॉगिंग, फ़िल्टर और लचीला कॉन्फ़िगरेशन का समर्थन करता है। XML के माध्यम से कॉन्फ़िगरेशन का उदाहरण:

\n
<?xml version="1.0" encoding="UTF-8"?>\n<Configuration>\n    <Appenders>\n        <Console name="Console" target="SYSTEM_OUT">\n            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>\n        </Console>\n    </Appenders>\n    <Loggers>\n        <Root level="info">\n            <AppenderRef ref="Console"/>\n        </Root>\n    </Loggers>\n</Configuration>
\n\n

SLF4J + Logback

\n

SLF4J विभिन्न लॉगिंग सिस्टम के लिए एक फ़ेसाड (एब्स्ट्रैक्शन) है। Logback इसका मूल कार्यान्वयन है। यह आधुनिक डी-फ़ैक्टो मानक है। उदाहरण:

\n
import org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic class SLF4JExample {\n    private static final Logger logger = LoggerFactory.getLogger(SLF4JExample.class);\n\n    public static void main(String[] args) {\n        logger.info("उपयोगकर्ता {} सिस्टम में लॉग इन किया", "admin");\n        try {\n            int result = 10 / 0;\n        } catch (ArithmeticException e) {\n            logger.error("शून्य से विभाजन त्रुटि", e);\n        }\n    }\n}
\n\n

शुरुआती लोगों के लिए लॉगिंग के सर्वोत्तम अभ्यास

\n

इन नियमों का पालन करने से आपकी लॉगिंग पेशेवर और उपयोगी बन जाएगी।

\n\n

1. सही लॉगिंग स्तरों का उपयोग करें

\n

जावा में निम्नलिखित स्तर स्वीकार किए जाते हैं (सबसे महत्वपूर्ण से कम से कम महत्वपूर्ण तक):

\n
    \n
  • ERROR — गंभीर त्रुटियाँ जिनमें तत्काल हस्तक्षेप की आवश्यकता है (जैसे, DB से कनेक्शन खोना)।
  • \n
  • WARN — संभावित समस्याओं के बारे में चेतावनियाँ (जैसे, पुराने API का उपयोग)।
  • \n
  • INFO — एप्लिकेशन संचालन की महत्वपूर्ण घटनाएँ (स्टार्टअप, शटडाउन, अनुरोध का सफल प्रसंस्करण)।
  • \n
  • DEBUG — डेवलपर के लिए विस्तृत जानकारी (चर के मान, एल्गोरिदम के चरण)।
  • \n
  • TRACE — अत्यधिक विस्तृत ट्रेसिंग (आमतौर पर केवल विशिष्ट बग खोजने के लिए सक्षम)।
  • \n
\n

लॉगिंग के लिए कभी भी System.out.println का उपयोग न करें - आप स्तरों और प्रारूप पर नियंत्रण खो देंगे।

\n\n

2. हमेशा संदर्भ जानकारी शामिल करें

\n

लॉग को प्रश्नों का उत्तर देना चाहिए: क्या हुआ, कब, कहाँ और किस डेटा के साथ। पैरामीटरयुक्त संदेशों का उपयोग करें:

\n
logger.info("उपयोगकर्ता {} के लिए ऑर्डर {} प्रोसेस किया गया", userId, orderId);
\n\n

3. लॉग फ़ाइलों के रोटेशन और संग्रहण को कॉन्फ़िगर करें

\n

प्रोडक्शन में, लॉग तेज़ी से डिस्क स्थान भर सकते हैं। Logback और Log4j 2 में बिल्ट-इन रोटेशन तंत्र हैं:

\n
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">\n    <file>logs/app.log</file>\n    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\n        <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>\n        <maxHistory>30</maxHistory>\n    </rollingPolicy>\n    <encoder>\n        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>\n    </encoder>\n</appender>
\n\n

4. लॉग में संवेदनशील डेटा न लिखें

\n

पासवर्ड, क्रेडिट कार्ड नंबर और व्यक्तिगत डेटा को लॉग में कभी न लिखें। यह सुरक्षा नियमों का उल्लंघन है। यदि आवश्यक हो, तो डेटा को मास्क करें:

\n
logger.info("उपयोगकर्ता ईमेल: {}", email.replaceAll("(?<=.{3}).(?=.*@)", "*"));
\n\n

निष्कर्ष

\n

लॉगिंग एक सॉफ्टवेयर इंजीनियर के शस्त्रागार में एक शक्तिशाली उपकरण है। सही लाइब्रेरी चुनें, स्तरों का सही उपयोग करें, संदर्भ जोड़ें और संवेदनशील डेटा से बचें। ये सरल नियम आपके एप्लिकेशन को अधिक विश्वसनीय और डीबग करने में आसान बना देंगे।

ब्लॉग

पुस्तक अनुशंसाएँ