CodeGym/Java Course/मॉड्यूल 3/Log4j में परिशिष्ट

Log4j में परिशिष्ट

उपलब्ध

परिशिष्टों की सूची

लकड़हारा आपको एक साथ कई फाइलों में डेटा सहेजने की अनुमति देता है। ऐसे आउटपुट डेटा स्ट्रीम को परिशिष्ट (परिशिष्ट से) कहा जाता है। काफी कुछ मानक परिशिष्ट हैं, इसलिए हम केवल सबसे लोकप्रिय को कवर करेंगे:

परिशिष्ट विवरण
1 सांत्वना देना डेटा को कंसोल पर प्रिंट करता है
2 फ़ाइल फ़ाइल में डेटा आउटपुट करता है
3 डेलीरोलिंगफाइल डेटा को फ़ाइल में आउटपुट करता है, फ़ाइल को चक्रीय रूप से ओवरराइट किया जाता है
4 अतुल्यकालिक आपको अन्य एपेंडर को एसिंक्रोनस रूप से डेटा लिखने की अनुमति देता है
5 सॉकेट एक विशिष्ट सॉकेट में डेटा लिखता है
6 जेडीबीसी JDBC प्रोटोकॉल का उपयोग करके डेटाबेस को संदेश लिखता है
7 जेपीए जेपीए प्रोटोकॉल का उपयोग कर डेटाबेस को संदेश लिखता है
8 एचटीटीपी दूरस्थ सर्वर पर HTTP प्रोटोकॉल के माध्यम से ईवेंट भेजता है
9 एसएमटीपी संदेशों को बफ़र में संग्रहीत करता है और फिर उन्हें ईमेल के रूप में भेजता है

सभी परिशिष्टों के लिए अच्छा दस्तावेज उनकी आधिकारिक वेबसाइट पर है

और नीचे हम उनमें से सबसे लोकप्रिय और सरल विचार करेंगे।

कंसोलएपेंडर

सबसे सरल परिशिष्ट हैConsoleApender । जैसा कि आपने अनुमान लगाया होगा, वह केवल अपने संदेश कंसोल पर लिखता है। इसके हमारे लिए कई दिलचस्प पैरामीटर हैं:

गुण
1 नाम परिशिष्ट नाम
2 फ़िल्टर आपको कुछ संदेशों को फ़िल्टर करने की अनुमति देता है
3 विन्यास आउटपुट के समय संदेशों के स्वरूपण को निर्दिष्ट करता है
4 लक्ष्य निर्दिष्ट करता है कि कहां लिखना है: SYTEM_OUTयाSYSTEM_ERR

इसे कॉन्फ़िगर करना बहुत आसान है:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
    <PatternLayout pattern="%m%n"/>
    </Console>
</Appenders>
  <Loggers>
    <Root level="error">
    <AppenderRef ref="STDOUT"/>
    </Root>
</Loggers>
</Configuration>

FileAppender

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

लेकिन हम उनमें से केवल सबसे लोकप्रिय पर विचार करेंगे।

1 नाम परिशिष्ट का नाम निर्दिष्ट करता है
2 फ़िल्टर आपको कुछ संदेशों को फ़िल्टर करने की अनुमति देता है
3 विन्यास आउटपुट के समय संदेशों के स्वरूपण को निर्दिष्ट करता है
4 फ़ाइल का नाम संदेश लिखने के लिए फ़ाइल का नाम निर्दिष्ट करता है
5 संलग्न यदि true, तो संदेशों को पुराने लॉग में जोड़ दिया जाएगा, यदि false- हर बार एप्लिकेशन प्रारंभ होने पर लॉग फ़ाइल को फिर से बनाया जाएगा।
6 बफर आकार बफर आकार को बाइट्स में सेट करता है
7 directflush यदि true, तो प्रत्येक संदेश वास्तव में तुरंत डिस्क पर लिखा जाता है (बिना बफर के)। लॉग धीरे-धीरे काम करना शुरू करता है, लेकिन प्रोग्राम के क्रैश होने पर यह आपको डेटा खोने से बचाता है।

आप पहले से ही जानते हैं कि फ़ाइलों के साथ अच्छी तरह से कैसे काम करना है, इसलिए ये सेटिंग आपके लिए कोई नई बात नहीं है। कंसोल लॉगर की तुलना में ऐसे लॉगर को कॉन्फ़िगर करना और भी आसान है:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <File name="MyFile" fileName="logs/app.log">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
    </File>
</Appenders>
<Loggers>
    <Root level="error">
    <AppenderRef ref="MyFile"/>
    </Root>
</Loggers>
</Configuration>

रोलिंगफाइलएपेंडर

सबसे लोकप्रिय एपेंडर हैRollingFileAppender । इसके विपरीत FileAppender, यह आपको लॉग को कई छोटी फाइलों में विभाजित करने की अनुमति देता है। बड़े लॉग के लिए यह बहुत महत्वपूर्ण है। इसके अलावा, यह आपको नियम निर्धारित करने की अनुमति देता है कि नई फाइलों के लिखे जाने के बाद पुरानी फाइलों का क्या किया जाए।

और इस एपेंडर में लगभग सौ अलग-अलग सेटिंग्स हैं। आप लिंक पर उनके बारे में और जान सकते हैं ।

इस एपेंडर की सबसे लोकप्रिय विशेषताओं पर विचार करें:

गुण
1 नाम परिशिष्ट का नाम निर्दिष्ट करता है
2 फ़िल्टर आपको कुछ संदेशों को फ़िल्टर करने की अनुमति देता है
3 विन्यास आउटपुट के समय संदेशों के स्वरूपण को निर्दिष्ट करता है
4 फ़ाइल का नाम संदेश लिखने के लिए फ़ाइल का नाम निर्दिष्ट करता है
5 filePattern संग्रह फ़ाइलों के लिए नामकरण पैटर्न निर्दिष्ट करता है जो अब नहीं लिखे गए हैं
6 नीति उस स्थिति को निर्दिष्ट करता है जब फ़ाइल को ओवरराइट किया जाना शुरू हो जाना चाहिए
7 रणनीति पुरानी फाइलों के साथ क्या करना है इसका वर्णन करता है: संग्रह, इतिहास कितने दिनों तक रखना है, आदि।

यहाँ एक अच्छा उदाहरण है:

<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
    <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
    </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
    <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

पैरामीटर filePatternपुराने लॉग के संग्रह के लिए एक टेम्पलेट निर्दिष्ट करता है। दो भी हैं, जब ट्रिगर किया जाता है, तो एक नई फाइल लिखी जाएगी:

  • TimeBasedTriggeringPolicy– यदि कोई नया दिन शुरू होता है तो काम करेगा (वर्तमान तिथि बदल जाती है)
  • SizeBasedTriggeringPolicy- फ़ाइल का आकार 250 एमबी तक पहुंचने पर काम करेगा
टिप्पणियां
  • लोकप्रिय
  • नया
  • पुराना
टिप्पणी लिखने के लिए आपको साइन इन करना होगा
इस पेज पर अभी तक कोई टिप्पणियां नहीं हैं