Log4j'da log filtrlar

All lectures for UZ purposes
Daraja, Dars
Mavjud

5.1 Filtrlar ro'yxati

Logger xabarlarni filtratsiya qilishni juda qulay tarzda sozlash imkonini beradi. Buning uchun unda turli-tuman parametrlar bilan o'nlab filtrlar mavjud. Quyida jadvalda eng mashhur filtrlar keltirilgan:

Filtrlar Tavsif
1 BurstFilter Ma'lum darajadagi log uchun soniyada xabar chastotasini boshqarishga imkon beradi.
2 CompositeFilter Bir nechta ketma-ket filtrlar o'rnatishga imkon beradi.
3 DynamicThresholdFilter Logda ma'lum bir ma'lumot mavjud bo'lsa, batafsil loglashni yoqishga imkon beradi.
4 MapFilter Birinchi o'ringa turli parametrlar orqali murakkab mantiqiy ifoda yaratishga imkon beradi.
5 MarkerFilter Voqea loglash vaqtida oldindan qo'shilgan teglar orqali xabarlarni filtrlaydi.
6 RegexFilter Maska - muntazam ifodani o'rnatishga imkon beradi.
7 StructuredDataFilter Xabarlar ichida ma'lum bir ma'lumot mavjudligi orqali filtrlaydi.
8 ThreadContextMapFilter Joriy oqimdan olingan ma'lumotlar asosida filtrlarni boshqaradi.
9 ThresholdFilter Log xabari darajasiga asoslangan holda loglashni boshqaradi.
10 TimeFilter Muayyan vaqt ichida filtrlarni yoqish va o'chirishga imkon beradi.

Quyida biz ularning faqat uchta haqida gapiramiz. Ko'proq ma'lumotni ularning rasmiy saytida o'qib olishingiz mumkin.

5.2 TimeFilter

TimeFilter muayyan vaqt ichida filtrlarni yoqish va o'chirish imkonini beradi va 5 ta parametrga ega:

1 start Loglashni boshlash vaqti HH:mm:ss formatida
2 end Loglashni o'chirish vaqti HH:mm:ss formatida
3 timezone Vaqt zonasini belgilaydi.
4 onMatch Filtr sharti rost bo'lganda loglash. ACCEPT, DENY yoki NEUTRAL bo'lishi mumkin. Standart NEUTRAL.
5 onMismatch Filtr sharti yolg'on bo'lganda loglash. ACCEPT, DENY yoki NEUTRAL bo'lishi mumkin. Standart NEUTRAL.

Keling, har kuni erta tongda 5:00 da loglashni yoqib, 5:30 da uni o'chiradigan filtrni sozlaymiz. Quyida to'liq konfiguratsiyali filtr misoli:


    <?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 filtri xabarlarni filtratsiya qilish uchun muntazam ifodalar maskasini o'rnatishga imkon beradi. Ushbu filtr 4 ta parametrga ega:

1 regex Xabarlarni filtratsiya qilish uchun qo'llaniladigan muntazam ifodalar maskasi.HH:mm:ss
2 useRawMsg Maska xabar formatlanishidan oldin (true) yoki so'ng (false) qo'llaniladi
3 onMatch Filtr sharti rost bo'lganida loglash. ACCEPT, DENY yoki NEUTRAL bo'lishi mumkin. Standart NEUTRAL.
4 onMismatch Filtr sharti yolg'on bo'lganida loglash. ACCEPT, DENY yoki NEUTRAL bo'lishi mumkin. Standart NEUTRAL.

Keling, faqat "javarush" so'zini o'z ichiga olgan xabarlarni o'tkazadigan filtrni sozlaymiz. Quyida to'liq konfiguratsiyali filtr misoli:


    <?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=".* javarush .*" 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

ThresholdFilter filtri xabar darajasi bo'yicha filtratsiyani sozlash imkonini beradi. U atigi 3 ta parametrga ega:

1 level Xabarlarni loglash darajasini belgilaydi: ERROR, DEBUG, …
2 onMatch Filtr sharti rost bo'lganida loglash. ACCEPT, DENY yoki NEUTRAL bo'lishi mumkin. Standart NEUTRAL.
3 onMismatch Filtr sharti yolg'on bo'lganida loglash. ACCEPT, DENY yoki NEUTRAL bo'lishi mumkin. Standart NEUTRAL.

Keling, faqat DEBUG darajasidagi xabarlarni o'tkazadigan filtrni sozlaymiz. Quyida to'liq konfiguratsiyali filtr misoli:


    <?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>
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION