CodeGym /Java Course /मॉड्यूल 3 /Log4j में लॉग फिल्टर

Log4j में लॉग फिल्टर

मॉड्यूल 3
स्तर 5 , सबक 4
उपलब्ध

5.1 फिल्टर की सूची

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

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

नीचे हम उनमें से सिर्फ तीन के बारे में बात करेंगे। आप इन फ़िल्टर के बारे में उनकी आधिकारिक वेबसाइट पर अधिक जान सकते हैं ।

5.2 टाइमफिल्टर

फ़िल्टर TimeFilterआपको एक निश्चित समय पर फ़िल्टर चालू और बंद करने की अनुमति देता है, इसके 5 पैरामीटर हैं:

1 शुरू प्रारूप में लॉगिंग प्रारंभ समयHH:mm:ss
2 अंत प्रारूप में लॉगिंग समयHH:mm:ss
3 समय क्षेत्र समय क्षेत्र सेट करता है।
4 onMatch यदि फ़िल्टर की स्थिति सही है तो कैसे लॉग इन करें । शायद ACCEPT, DENYया NEUTRAL। डिफ़ॉल्ट NEUTRAL
5 on बेमेल यदि फ़िल्टर की स्थिति गलत है तो कैसे लॉग इन करें । शायद ACCEPT, DENYया NEUTRAL। डिफ़ॉल्ट NEUTRAL

आइए एक फ़िल्टर सेट करें जो सुबह 5 बजे लॉगिंग चालू करेगा और इसे हर दिन सुबह 5:30 बजे बंद कर देगा। पूर्ण फ़िल्टर कॉन्फ़िगरेशन वाला एक उदाहरण नीचे दिया गया है:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
        <TimeFilter start="05:00:00" end="05:30:00" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.3 रेगेक्स फ़िल्टर

फ़िल्टर RegexFilterआपको संदेशों को फ़िल्टर करने के लिए मास्क (नियमित अभिव्यक्ति) सेट करने की अनुमति देता है। इस फ़िल्टर के 4 पैरामीटर हैं:

1 regex रेगुलर एक्सप्रेशन निर्दिष्ट करता है - एक मास्क जिसका उपयोग संदेशों को फ़िल्टर करने के लिए किया जाता है।HH:mm:ss
2 useRawMsg संदेश में स्वरूपित करने से पहले (सत्य) या स्वरूपण के बाद (गलत) मास्क लगाया जाता है
3 onMatch यदि फ़िल्टर की स्थिति सही है तो कैसे लॉग इन करें । शायद ACCEPT, DENYया NEUTRAL। डिफ़ॉल्ट NEUTRAL
4 on बेमेल यदि फ़िल्टर की स्थिति गलत है तो कैसे लॉग इन करें । शायद ACCEPT, DENYया NEUTRAL। डिफ़ॉल्ट NEUTRAL

चलिए एक फ़िल्टर सेट करते हैं जो केवल codegym शब्द वाले संदेशों को अनुमति देगा। पूर्ण फ़िल्टर कॉन्फ़िगरेशन वाला एक उदाहरण नीचे दिया गया है:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log"   filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
        <RegexFilter regex=".* codegym .*" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
      </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.4 थ्रेशोल्ड फ़िल्टर

थ्रेशोल्डफ़िल्टर फ़िल्टर आपको संदेश स्तर द्वारा फ़िल्टरिंग को कॉन्फ़िगर करने की अनुमति देता है। इसके केवल 3 पैरामीटर हैं:

1 स्तर संदेश लॉगिंग स्तर का नाम सेट करता है: ERROR, DEBUG, ...
2 onMatch यदि फ़िल्टर की स्थिति सही है तो कैसे लॉग इन करें । शायद ACCEPT, DENYया NEUTRAL। डिफ़ॉल्ट NEUTRAL
3 on बेमेल यदि फ़िल्टर की स्थिति गलत है तो कैसे लॉग इन करें । शायद ACCEPT, DENYया NEUTRAL। डिफ़ॉल्ट NEUTRAL

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


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
           <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION