Logback कॉन्फ़िगर करना
Appenders, patterns और levels
Logback कॉन्फ़िगर करना, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
लॉगबैक क्या है?
लॉगबैक एक लोकप्रिय SLF4J बैकएंड है, जिसे लॉग4ज के उसी लेखक ने लिखा है। SLF4J जिन लॉगिंग कॉल का वर्णन करता है, उन्हें वास्तव में लॉगबैक ही निष्पादित करता है।
आप इसे क्लासपाथ पर logback.xml नाम वाली फ़ाइल से कॉन्फ़िगर करते हैं, जो आम तौर पर src/main/resources के अंतर्गत होती है।
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
log.info("Logback reads logback.xml at startup");
}
}तीन मूल घटक
लॉगबैक के कॉन्फ़िगरेशन में तीन मुख्य अवधारणाएँ होती हैं:
- लॉगर: लॉग घटनाओं का नामित स्रोत, जिसमें एक स्तर होता है।
- एपेंडर: एक गंतव्य (कंसोल, फ़ाइल)।
- एन्कोडर/लेआउट: घटना को पाठ में फ़ॉर्मैट करता है।
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
log.info("logger -> appender -> encoder -> output");
}
}एक कंसोल एपेंडर
सबसे सरल कॉन्फ़िगरेशन सब कुछ कंसोल पर भेजता है। एन्कोडर का पैटर्न पंक्ति का फ़ॉर्मैट निर्धारित करता है।
यह XML आपके Java कोड में नहीं, बल्कि logback.xml में रहता है।
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>पैटर्न को समझना
पैटर्न रूपांतरण शब्द % से शुरू होते हैं:
%dसमय-चिह्न है, और%levelस्तर है।%loggerलॉगर का नाम है, और%threadथ्रेड है।%msgआपका संदेश है, और%nनई पंक्ति है।
%-5level स्तर के आगे खाली स्थान जोड़कर उसकी चौड़ाई 5 करता है।
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
// Output rendered by pattern: time LEVEL logger - message
log.info("hello");
}
}रूट लॉगर और स्तर
<root> तत्व पूरे ऐप का डिफ़ॉल्ट स्तर और उन एपेंडरों को निर्धारित करता है जिनमें वह लिखता है।
level="info" निर्धारित करने का अर्थ है कि INFO, WARN और ERROR भेजे जाएँगे; DEBUG और TRACE दबा दिए जाएँगे।
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
</appender>
<root level="warn">
<appender-ref ref="STDOUT" />
</root>
</configuration>प्रति-पैकेज स्तर
किसी पैकेज का स्तर बदलने के लिए <logger> तत्व जोड़ें। इससे आप अपनी क्लासों के लिए DEBUG सक्रिय कर सकते हैं और लाइब्रेरी को शांत रख सकते हैं।
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
</appender>
<logger name="com.example.app" level="debug" />
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>रोलिंग फ़ाइल एपेंडर
उत्पादन परिवेश में आप आम तौर पर ऐसी फ़ाइलों में लिखते हैं जो प्रतिदिन या आकार बढ़ने पर बदल जाती हैं, ताकि लॉग बिना सीमा के बड़े न होते जाएँ।
समय-आधारित नीति वाला RollingFileAppender प्रतिदिन एक फ़ाइल बनाता है और सीमित इतिहास रखता है।
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>एक साथ कई एपेंडर
रूट लॉगर कई एपेंडरों का संदर्भ दे सकता है, इसलिए लॉग एक ही समय पर कंसोल और फ़ाइल दोनों में जाते हैं।
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %msg%n</pattern></encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/app.log</file>
<encoder><pattern>%d %-5level %msg%n</pattern></encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>MDC को प्रिंट करना
हर पंक्ति में अनुरोध आईडी जैसा MDC संदर्भ शामिल करने के लिए पैटर्न में %X{key} जोड़ें।
इसके बाद MDC में रखा गया कोई भी मान अपने-आप दिखाई देगा।
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
MDC.put("requestId", "req-1234");
// Pattern: %X{requestId} %-5level %msg%n
log.info("handled");
MDC.clear();
}
}एडिटिविटी
डिफ़ॉल्ट रूप से लॉगर की घटनाएँ उसके पूर्वजों के एपेंडरों में भी जाती हैं। इसे एडिटिविटी कहते हैं।
यदि किसी पैकेज लॉगर का अपना एपेंडर है और आप दोहरा परिणाम नहीं चाहते, तो उस पर additivity="false" निर्धारित करें।
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
</appender>
<logger name="com.example.audit" level="info" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<root level="warn">
<appender-ref ref="STDOUT" />
</root>
</configuration>स्वतः पुनः लोड और चर
लॉगबैक <configuration scan="true"> के साथ समय-समय पर कॉन्फ़िगरेशन फिर से लोड कर सकता है। यह पुनः आरंभ किए बिना स्तर बदलने के लिए उपयोगी है।
आप ${LOG_DIR} प्लेसहोल्डर के माध्यम से लॉग निर्देशिका जैसे गुण भी पढ़ सकते हैं।
<configuration scan="true" scanPeriod="30 seconds">
<property name="LOG_DIR" value="logs" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${LOG_DIR}/app.log</file>
<encoder><pattern>%d %-5level %msg%n</pattern></encoder>
</appender>
<root level="info"><appender-ref ref="FILE" /></root>
</configuration>त्वरित जाँच
लॉगबैक कॉन्फ़िगरेशन के अपने ज्ञान की जाँच करें।
पुनरावलोकन
आपने लॉगबैक को कॉन्फ़िगर करना सीखा:
- कॉन्फ़िगरेशन
logback.xmlमें रहता है, जिसमें लॉगर, एपेंडर और एन्कोडर होते हैं। - पैटर्न
%d,%level,%msg,%X{}से पंक्तियों को फ़ॉर्मैट करते हैं। - RollingFileAppender लॉग फ़ाइलें बदलता है; प्रति-पैकेज स्तर और एडिटिविटी निर्धारित करें।
- लाइव पुनः कॉन्फ़िगरेशन के लिए
scanसक्रिय करें।
आपने लॉगिंग पाठ्यक्रम पूरा कर लिया है।
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
log.info("Logback configuration course complete");
}
}एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Logback कॉन्फ़िगर करना” पाठ निःशुल्क है?
हाँ—“Logback कॉन्फ़िगर करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Logback कॉन्फ़िगर करना” में मैं क्या सीखूँगा?
Appenders, patterns और levels आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“Logback कॉन्फ़िगर करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Structured Logging क्यों
- SLF4J Facade और Loggers
- Parameterized Logging
- Logback कॉन्फ़िगर करना