Log4j Apenderlar

All lectures for UZ purposes
Daraja, Dars
Mavjud

Apenderlar ro‘yxati

Logger ma'lumotlarni bir nechta fayllarga saqlash imkonini beradi. Bunday chiqish oqimlari apenderlar deb ataladi (append so‘zidan). Juda ko‘p standart apenderlar mavjud, shuning uchun biz faqat eng mashhurlarini ko‘rib chiqamiz:

Apenderlar Tavsif
1 Console Ma'lumotlarni konsolga chiqaradi
2 File Ma'lumotlarni faylga chiqaradi
3 DailyRollingFile Ma'lumotlarni faylga chiqaradi, fayl doimiy ravishda qayta yoziladi
4 Async Boshqa apenderga ma'lumotlarni asinxron yozish imkonini beradi
5 Socket Ma'lumotlarni belgilangan soketga yozadi
6 JDBC Xabarlarni JDBC protokoli orqali bazaga yozadi
7 JPA Xabarlarni JPA protokoli orqali bazaga yozadi
8 HTTP Voqealarni HTTP-protokoli orqali masofaviy serverga jo‘natadi
9 SMTP Xabarlarni buferga yig‘adi, keyin email orqali jo‘natadi

Barcha apenderlar haqida yaxshi hujjatlar ularning rasmiy saytida mavjud

Quyida esa biz eng mashhur va osonlarini ko‘rib chiqamiz

ConsoleAppender

Eng oddiy apender – bu ConsoleApender. Siz allaqachon sezganingizdek, u xabarlarni oddiygina konsolga yozadi. Unda biz uchun qiziqarli bir nechta parametrlar mavjud:

Attribyutlar
1 name Apenderning nomi
2 filter Xabarlarning bir qismini filtrlash imkonini beradi
3 layout Chiqishdagi xabarlarni formatlashni belgilaydi
4 target Qayerga yozish kerakligini belgilaydi: SYSTEM_OUT yoki SYSTEM_ERR

Uni sozlash juda oson:


    <?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

Eng foydali apender – bu FileAppender. ConsoleAppender farqli ravishda, bu xabarlarni faylga yozadi. Bu juda foydali, agar ilovangiz biror serverda ishlayotgan bo‘lsa. Unda turli operatsion tizimlarda fayllarni yozish kerak bo‘lgani uchun ko‘p parametrlar mavjud.

Ammo biz faqat eng mashhurlari bilan tanishamiz

1 name Apenderning nomini belgilaydi
2 filter Xabarlarning bir qismini filtrlash imkonini beradi
3 layout Chiqishdagi xabarlarni formatlashni belgilaydi
4 fileName Xabarlarni qaysi faylga yozish kerakligini belgilaydi
5 append Agar true bo‘lsa, xabarlar eski logga yoziladi, agar false bo‘lsa – log-fayl har safar ilova ishga tushirilganda qayta yaratiladi.
6 bufferSize Bufer hajmini baytlarda belgilaydi
7 immediateFlush Agar true bo‘lsa, har bir xabar diskka darhol yoziladi (bufersiz). Log sekin ishlay boshlaydi, lekin bu dasturning qulashida ma'lumotlarni yo‘qotishdan saqlaydi.

Siz allaqachon fayllar bilan yaxshi ishlashni bilasiz, shuning uchun bu sozlamalarda siz uchun hech qanday yangilik yo‘q. Bunday loggerni sozlash ham konsoldan osonroq:


    <?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

Eng mashhur apender – bu RollingFileAppender. FileAppender farqli ravishda, bu logni ko‘p kichik fayllarga bo‘lish imkonini beradi. Bu katta loglar uchun juda dolzarb. Shuningdek, u yangi fayllar yozilayotganda eski fayllar bilan nima qilish mumkinligini belgilash imkonini beradi.

Bu apender deyarli yuzga yaqin turli sozlamalarga ega. Ular haqida batafsil havola orqali tanishishingiz mumkin

Ushbu apenderning eng mashhur atributlarini ko‘rib chiqamiz:

Attribyutlar
1 name Apenderning nomini belgilaydi
2 filter Xabarlarning bir qismini filtrlash imkonini beradi
3 layout Chiqishdagi xabarlarni formatlashni belgilaydi
4 fileName Xabarlarni qaysi faylga yozish kerakligini belgilaydi
5 filePattern Yozilmaydigan arxiv fayllar uchun nomlar shablonini belgilaydi
6 policy Fayl qachon qayta yozilishi kerakligini belgilaydi
7 strategy Eski fayllar bilan nima qilish kerakligini belgilaydi: arxivlash, qancha kun tarixni saqlash va hokazo

Yaxshi misol:


<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 parametri yordamida eski loglar arxivlari uchun shablon belgilangan. Shuningdek, bu yerda yangi fayl yozilishi boshlanishiga sabab bo‘luvchi ikkita shart mavjud:

  • TimeBasedTriggeringPolicy – yangi kunlar boshlanishida (joriy sana o'zgarganda) ishlaydi
  • SizeBasedTriggeringPolicy– fayl hajmi 250MB ga yetganda ishlaydi
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION