JavaRush /Kurslar /All lectures for UZ purposes /Loglash darajalarini sozlash

Loglash darajalarini sozlash

All lectures for UZ purposes
Daraja , Dars
Mavjud

4.1 Loglash darajalari ro'yxati

O'zingiz dasturingizni yozdingiz, serverga yukladingiz va darhol savollar paydo bo'la boshladi:

  • debug() metodi productionda ishlayotganida ishlamaydigan qilib qanday qilish mumkin?
  • Loglarda juda ko'p ma'lumot bor, faqat xato xabarlarini qoldirishni xohlaysizmi?
  • Dastur bir qismining batafsil logini qanday ko'rish mumkin?

Albatta, loglarni yaratuvchilar bunga o'nlab yillar oldin duch kelishgan. C tilida bu muammoni qanday hal qilishganini aytmayman, lekin Java tilida bu juda chiroyli tarzda hal qilingan.

Log yozuvga ma'lumot yozishdan oldin filtrlash qiladi. Loglash darajasini sozlash orqali logning aniqligini juda tez kamaytirish/ko'paytirish mumkin. Ushbu darajalar quyidagi jadvalda tasvirlangan:

Daraja Izoh
1 ALL Barcha xabarlarni logga yozish
2 TRACE Saralash paytida mayda xabar
3 DEBUG Saralash muhim xabarlari
4 INFO Oddiy xabarlar
5 WARN Faqat fatal, error va warning yozish
6 ERROR Faqat xatolar va fatal xatolarni yozish
7 FATAL Faqat fatal xatolarni yozish
8 OFF Xabarlarni logga yozmaslik

Bu darajalar xabarlarni filtrlashda ishlatiladi. Agar loglash darajasi WARNga o'rnatilsa, WARNdan kamroq muhim bo'lgan barcha xabarlar qoldiriladi: TRACE, DEBUG, INFO. Agar filtrlash darajasi FATALga o'rnatilsa, ERRORlar ham qoldiriladi.

Filtrlashda ishlatiladigan yana ikki daraja mavjud – bu OFF (barcha xabarlarni qoldirish) va ALL – barcha xabarlarni yozish (hech narsani qoldirmaslik).

4.2 Logni sozlash misoli

Keling, logni sozlashning oddiy misolini ko'rib chiqamiz. Buning uchun bizga resources papkasida joylashtirilishi mumkin bo'lgan log4j.properties fayli kerak bo'ladi. Unga quyidagi mazmunni qo'shamiz:


# Root logger option
log4j.rootLogger=WARN, stdout
 
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}

Mana shu eng birinchi qatorida biz loglash darajasini belgilayapmiz – WARN. Bu esa degani, loggaga DEBUG va INFO statusli xabarlar yozilmaydi.

  • Qaysi turdagi appender ishlatishni ko'rsatamiz – ConsoleAppender
  • Logni qayerga yozishni ko'rsatamiz – System.out
  • Yozuv formatini boshqaradigan klassni belgilaymiz – PatternLayout
  • Barcha xabarlar uchun yozuv formatini belgilaymiz – sana va vaqt

4.3 Loglashdagi mashhur xatolar

Yana bir muhim jihat – loglashdagi mashhur xatolar. Ko'p narsa noto'g'ri qilinishi mumkin, lekin bir nechta keng tarqalgan xatolarni ajratib ko'rsatish mumkin:

  1. Log ko'pligi. Har bir qadamni loglash kerak emas, qaysi nazariy jihatdan muhim bo'lishi mumkin. Bir qoida bor: loglar ishlash qobiliyatini 10% dan ortiq yuklamasligi kerak. Aks holda, samaradorlik bilan bog'liq muammolar paydo bo'lishi mumkin.
  2. Barcha ma'lumotlarni bir faylga loglash. Bu oxir-oqibat o'qish/yozishni juda murakkab qiladi, ba'zi tizimlarda fayl hajmi cheklovlari mavjud ekanligini aytmasa ham bo'ladi.
  3. Loglash darajalarini noto'g'ri qo'llash. Har bir loglash darajasining aniq chegaralari bor va ularga rioya qilish kerak. Agar chegara noaniq bo'lsa, qaysi darajani ishlatishga kelishib olish mumkin.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION