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

Log4j मध्ये लॉग फिल्टर

मॉड्यूल 3
पातळी 5 , धडा 4
उपलब्ध

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

लॉगर तुम्हाला संदेश फिल्टरिंग अतिशय थंडपणे कॉन्फिगर करण्याची परवानगी देतो. हे करण्यासाठी, त्याच्याकडे सर्व प्रकारच्या पॅरामीटर्ससह दोन डझन फिल्टर आहेत. खालील सारणी सर्वात लोकप्रिय दर्शविते.

फिल्टर वर्णन
बर्स्टफिल्टर तुम्हाला दिलेल्या लॉगिंग स्तरासाठी प्रति सेकंद संदेशांची वारंवारता नियंत्रित करण्याची अनुमती देते.
2 कंपोझिटफिल्टर तुम्हाला एकाधिक अनुक्रमिक फिल्टर सेट करण्याची अनुमती देते.
3 डायनॅमिक थ्रेशोल्डफिल्टर लॉगमध्ये विशिष्ट माहिती आढळल्यास तुम्हाला तपशीलवार लॉगिंग सक्षम करण्याची अनुमती देते.
4 मॅपफिल्टर आपल्याला अनेक पॅरामीटर्समधून फिल्टरसाठी एक जटिल तार्किक अभिव्यक्ती तयार करण्यास अनुमती देते.
मार्करफिल्टर आपल्याला टॅगद्वारे संदेश फिल्टर करण्याची परवानगी देते, इव्हेंट लॉगिंग दरम्यान टॅग प्रथम जोडला जाणे आवश्यक आहे.
6 RegexFilter आपल्याला मास्क सेट करण्याची परवानगी देते - एक नियमित अभिव्यक्ती.
संरचित डेटाफिल्टर तुम्हाला संदेशांमध्ये विशिष्ट डेटाच्या उपस्थितीने फिल्टर करण्याची अनुमती देते.
8 ThreadContextMapFilter तुम्हाला सध्याच्या थ्रेडच्या संदर्भातून घेतलेल्या डेटावर आधारित फिल्टर व्यवस्थापित करण्याची अनुमती देते.
थ्रेशोल्ड फिल्टर लॉग संदेश स्तरावर आधारित लॉगिंग नियंत्रित करते.
10 टाइमफिल्टर तुम्हाला विशिष्ट वेळी फिल्टर चालू आणि बंद करण्याची अनुमती देते.

खाली आपण त्यापैकी फक्त तीन बद्दल बोलू. तुम्ही त्यांच्या अधिकृत वेबसाइटवर या फिल्टर्सबद्दल अधिक जाणून घेऊ शकता .

5.2 टाइमफिल्टर

फिल्टर TimeFilterआपल्याला विशिष्ट वेळी फिल्टर चालू आणि बंद करण्याची परवानगी देतो, त्यात 5 पॅरामीटर्स आहेत:

प्रारंभ फॉरमॅटमध्ये लॉगिंग सुरू होण्याची वेळHH:mm:ss
2 शेवट फॉरमॅटमध्ये लॉग ऑफ वेळHH:mm:ss
3 वेळ क्षेत्र टाइम झोन सेट करते.
4 ऑन मॅच फिल्टरची स्थिती सत्य असल्यास लॉग कसे करावे . कदाचित ACCEPT, DENYकिंवा NEUTRAL. डीफॉल्ट NEUTRAL_
विसंगत फिल्टरची स्थिती चुकीची असल्यास लॉग कसे करावे . कदाचित 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

फिल्टर RegexFilterतुम्हाला संदेश फिल्टर करण्यासाठी मास्क (रेग्युलर एक्सप्रेशन) सेट करण्याची परवानगी देतो. या फिल्टरमध्ये 4 पॅरामीटर्स आहेत:

regex नियमित अभिव्यक्ती निर्दिष्ट करते - एक मुखवटा जो संदेश फिल्टर करण्यासाठी वापरला जातो.HH:mm:ss
2 useRawMsg मास्क मेसेजमध्ये फॉरमॅट करण्यापूर्वी (सत्य) किंवा फॉरमॅटिंगनंतर (असत्य) लागू केला जातो.
3 ऑन मॅच फिल्टरची स्थिती सत्य असल्यास लॉग कसे करावे . कदाचित ACCEPT, DENYकिंवा NEUTRAL. डीफॉल्ट NEUTRAL_
4 विसंगत फिल्टरची स्थिती चुकीची असल्यास लॉग कसे करावे . कदाचित 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 थ्रेशोल्ड फिल्टर

ThresholdFilter फिल्टर तुम्हाला संदेश स्तरानुसार फिल्टरिंग कॉन्फिगर करण्याची परवानगी देतो. यात फक्त 3 पॅरामीटर्स आहेत:

पातळी संदेश लॉगिंग स्तराचे नाव सेट करते: ERROR, DEBUG, …
2 ऑन मॅच फिल्टरची स्थिती सत्य असल्यास लॉग कसे करावे . कदाचित ACCEPT, DENYकिंवा NEUTRAL. डीफॉल्ट NEUTRAL_
3 विसंगत फिल्टरची स्थिती चुकीची असल्यास लॉग कसे करावे . कदाचित 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