Documentation
¶
Overview ¶
Package logging provides tools for easy logging errors with traceback. Logging package is written over slog.Logger.
Index ¶
- Variables
- func GetLogTraceback(skipLevel int) string
- func LogDebugContext(ctx context.Context, logger Logger, msg string, args ...any)
- func LogError(logger Logger, msg string, err error, args ...any)
- func LogErrorContext(ctx context.Context, logger Logger, msg string, err error, args ...any)
- func LogInfo(logger Logger, msg string, args ...any)
- func LogInfoContext(ctx context.Context, logger Logger, msg string, args ...any)
- type Config
- type DailyFile
- type Level
- type Logger
Constants ¶
This section is empty.
Variables ¶
var Levels = struct { INFO, DEBUG, WARN, ERROR Level }{ INFO: Level(slog.LevelInfo), DEBUG: Level(slog.LevelDebug), WARN: Level(slog.LevelWarn), ERROR: Level(slog.LevelError), }
Levels are a simple abstractions on slog.Level.
Functions ¶
func GetLogTraceback ¶
GetLogTraceback return a string with info about filename, function name and line https://stackoverflow.com/questions/25927660/how-to-get-the-current-function-name
func LogDebugContext ¶ added in v1.19.1
LogDebugContext — LogInfoContext на уровне DEBUG: те же поля Request ID и Traceback. Для строк, которые нужны только при отладке, — например, лог каждого HTTP-запроса.
func LogErrorContext ¶ added in v1.0.5
LogErrorContext uses provided logger to save error with message info and context. Context is used to get request ID and connect it with error.
Types ¶
type DailyFile ¶ added in v1.19.1
type DailyFile struct {
// contains filtered or unexported fields
}
DailyFile — io.Writer, пишущий в файл текущей даты: путь — pattern, где %s заменён датой в формате dateFormat и часовом поясе location (nil — UTC).
В полночь файл закрывается и открывается новый: файл прошлого дня перестаёт расти, и удаление по возрасту (mtime) его находит. Путь, посчитанный один раз на старте, давал файл на весь запуск: он рос до перезапуска, и срок хранения его не трогал — в него писали. Перезапуск в тот же день дописывает файл дня. Каталог создаётся, если его нет. Дата считается только при переходе через полночь, а не на каждой строке.
Файл не открылся — одно предупреждение в stdout на сбой и повтор не чаще раза в retryInterval; был открыт файл прошлой даты — строки идут в него.
func NewDailyFile ¶ added in v1.19.1
NewDailyFile — писатель в файл текущей даты. Файл открывается при первой записи.
type Logger ¶ added in v1.5.0
type Logger interface {
Debug(msg string, args ...any)
DebugContext(ctx context.Context, msg string, args ...any)
Info(msg string, args ...any)
InfoContext(ctx context.Context, msg string, args ...any)
Warn(msg string, args ...any)
WarnContext(ctx context.Context, msg string, args ...any)
Error(msg string, args ...any)
ErrorContext(ctx context.Context, msg string, args ...any)
}
Logger interface is created for usage in external application according to "dependency inversion principle" of SOLID due to working via abstractions.
func New ¶ added in v1.5.1
New implements as singleton pattern to get Logger instance, created once for whole app:.
func NewDaily ¶ added in v1.19.1
NewDaily — синглтон-логгер, как New, но файл лога — свой на каждую дату (DailyFile): pattern с %s под дату в формате dateFormat и поясе location.
New открывает один файл на весь запуск, и он растёт до перезапуска: срок хранения по возрасту (mtime) его не трогает — в него пишут. Синглтон у New и NewDaily общий: какой вызван первым, тот логгер и остаётся.