Log Levels

Log Levels

Log darajalari

Har bir log yozuvi "qanchalik muhim" ekanini bildiruvchi darajaga ega: Debug (faqat dasturchi uchun batafsil), Info (odatiy voqealar), Warn (e'tibor talab qiladi, lekin hali xato emas), Error (biror narsa noto'g'ri ketdi).

example.go
package main

import (
	"log/slog"
	"os"
)

var opts = &slog.HandlerOptions{
	Level: slog.LevelWarn,
	ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr {
		if a.Key == slog.TimeKey {
			return slog.Attr{}
		}
		return a
	},
}

func main() {
	logger := slog.New(slog.NewTextHandler(os.Stdout, opts))
	logger.Debug("bu ko'rinmaydi")
	logger.Info("bu ham ko'rinmaydi")
	logger.Warn("bu ko'rinadi")
	logger.Error("bu ham ko'rinadi")
}

HandlerOptions.Level: slog.LevelWarn — "faqat Warn va undan yuqori darajadagi (Warn, Error) loglarni ko'rsat" degani. Bu production'da juda foydali: ishlab chiqarishda ortiqcha Debug/Info loglar bilan tizimni to'ldirmaslik uchun darajani Warn yoki Errorga qo'yish, lekin dasturni disk yoki tarmoq bilan sinab ko'rayotganda Debuggacha tushirish mumkin.

>_ Exercise

Faqat Error darajasidagi loglarni ko'rsatadigan logger sozlang.

  • opts'da Level'ni slog.LevelError qilib belgilang
  • Info, Warn va Error darajalarida bittadan xabar yozing
  • faqat Error xabari chiqishini tekshiring

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

HandlerOptions.Level orqali qaysi darajadan boshlab loglar ko'rsatilishini boshqarish mumkin — bu production loyihalarda log hajmini nazorat qilishning asosiy usuli.

NEXT UP

Structured Attributes

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Log Levels

Log darajalari

Har bir log yozuvi "qanchalik muhim" ekanini bildiruvchi darajaga ega: Debug (faqat dasturchi uchun batafsil), Info (odatiy voqealar), Warn (e'tibor talab qiladi, lekin hali xato emas), Error (biror narsa noto'g'ri ketdi).

example.go
package main

import (
	"log/slog"
	"os"
)

var opts = &slog.HandlerOptions{
	Level: slog.LevelWarn,
	ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr {
		if a.Key == slog.TimeKey {
			return slog.Attr{}
		}
		return a
	},
}

func main() {
	logger := slog.New(slog.NewTextHandler(os.Stdout, opts))
	logger.Debug("bu ko'rinmaydi")
	logger.Info("bu ham ko'rinmaydi")
	logger.Warn("bu ko'rinadi")
	logger.Error("bu ham ko'rinadi")
}

HandlerOptions.Level: slog.LevelWarn — "faqat Warn va undan yuqori darajadagi (Warn, Error) loglarni ko'rsat" degani. Bu production'da juda foydali: ishlab chiqarishda ortiqcha Debug/Info loglar bilan tizimni to'ldirmaslik uchun darajani Warn yoki Errorga qo'yish, lekin dasturni disk yoki tarmoq bilan sinab ko'rayotganda Debuggacha tushirish mumkin.

>_ Exercise

Faqat Error darajasidagi loglarni ko'rsatadigan logger sozlang.

  • opts'da Level'ni slog.LevelError qilib belgilang
  • Info, Warn va Error darajalarida bittadan xabar yozing
  • faqat Error xabari chiqishini tekshiring

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

HandlerOptions.Level orqali qaysi darajadan boshlab loglar ko'rsatilishini boshqarish mumkin — bu production loyihalarda log hajmini nazorat qilishning asosiy usuli.

NEXT UP

Structured Attributes