Documentation
¶
Index ¶
Constants ¶
const (
TraceIDKey contextKey = "trace_id"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Fields ¶
type Fields map[string]interface{}
Fields представляет дополнительные поля для структурированного логирования. Позволяет добавлять метаданные к логам для удобства поиска и анализа. Пример: Fields{"user_id": 123, "request_id": "abc-123"}
type FieldsHandler ¶
type FieldsHandler interface {
// ExtractFieldsFromContext извлекает поля из контекста и объединяет их с переданными полями.
// Контекст может содержать стандартные поля (например, trace_id) для сквозной трассировки.
ExtractFieldsFromContext(ctx context.Context, fields Fields) Fields
// MergeFields объединяет два набора полей. При конфликте ключей
// значения из fields2 перезаписывают значения из fields1.
MergeFields(fields1, fields2 Fields) Fields
}
FieldsHandler определяет интерфейс для работы с дополнительными полями логов. Обеспечивает извлечение полей из контекста и объединение наборов полей.
func NewFieldsHandler ¶
func NewFieldsHandler() FieldsHandler
NewFieldsHandler создает новый экземпляр обработчика полей логов. Возвращает интерфейс FieldsHandler для использования в системе логирования.
type Level ¶
type Level int
Level представляет уровень логирования
const ( LevelDebug Level = iota // Уровень отладки - детальная информация для разработчиков LevelInfo // Информационный уровень - общая информация о работе приложения LevelWarn // Уровень предупреждения - нештатные ситуации, которые не приводят к ошибкам LevelError // Уровень ошибки - ошибки, которые влияют на работу приложения LevelFatal // Критический уровень - ошибки, приводящие к остановке приложения )
type Logger ¶
type Logger interface {
// Debug логирует сообщение уровня отладки
Debug(ctx context.Context, format string, args ...interface{})
// Info логирует информационное сообщение
Info(ctx context.Context, format string, args ...interface{})
// Warning логирует предупреждение
Warning(ctx context.Context, format string, args ...interface{})
// Error логирует сообщение об ошибке
Error(ctx context.Context, format string, args ...interface{})
// Fatal логирует критическую ошибку и завершает приложение
Fatal(ctx context.Context, format string, args ...interface{})
// DebugErr логирует сообщение уровня отладки с ошибкой
DebugErr(ctx context.Context, err error, format string, args ...interface{})
// InfoErr логирует информационное сообщение с ошибкой
InfoErr(ctx context.Context, err error, format string, args ...interface{})
// WarningErr логирует предупреждение с ошибкой
WarningErr(ctx context.Context, err error, format string, args ...interface{})
// ErrorErr логирует сообщение об ошибке с дополнительной ошибкой
ErrorErr(ctx context.Context, err error, format string, args ...interface{})
// FatalErr логирует критическую ошибку с дополнительной ошибкой и завершает приложение
FatalErr(ctx context.Context, err error, format string, args ...interface{})
// DebugWithFields логирует сообщение уровня отладки с дополнительными полями
DebugWithFields(ctx context.Context, fields Fields, format string, args ...interface{})
// InfoWithFields логирует информационное сообщение с дополнительными полями
InfoWithFields(ctx context.Context, fields Fields, format string, args ...interface{})
// WarningWithFields логирует предупреждение с дополнительными полями
WarningWithFields(ctx context.Context, fields Fields, format string, args ...interface{})
// ErrorWithFields логирует сообщение об ошибке с дополнительными полями
ErrorWithFields(ctx context.Context, fields Fields, format string, args ...interface{})
// FatalWithFields логирует критическую ошибку с дополнительными полями и завершает приложение
FatalWithFields(ctx context.Context, fields Fields, format string, args ...interface{})
// DebugErrWithFields логирует сообщение уровня отладки с ошибкой и дополнительными полями
DebugErrWithFields(ctx context.Context, err error, fields Fields, format string, args ...interface{})
// InfoErrWithFields логирует информационное сообщение с ошибкой и дополнительными полями
InfoErrWithFields(ctx context.Context, err error, fields Fields, format string, args ...interface{})
// WarningErrWithFields логирует предупреждение с ошибкой и дополнительными полями
WarningErrWithFields(ctx context.Context, err error, fields Fields, format string, args ...interface{})
// ErrorErrWithFields логирует сообщение об ошибке с дополнительной ошибкой и полями
ErrorErrWithFields(ctx context.Context, err error, fields Fields, format string, args ...interface{})
// FatalErrWithFields логирует критическую ошибку с дополнительной ошибкой, полями и завершает приложение
FatalErrWithFields(ctx context.Context, err error, fields Fields, format string, args ...interface{})
}
Logger определяет основной интерфейс для логирования в приложении. Предоставляет методы для логирования с различными комбинациями параметров: - интерполяция строк (форматирование) - обработка ошибок - структурированные поля
func NewLogger ¶
func NewLogger(config LoggerConfig, fieldsHandler FieldsHandler, providers ...LoggerProvider) Logger
NewLogger создает кастомный логгер с указанными провайдерами. Позволяет гибко настраивать вывод логов через multiple providers. Пример: файловый провайдер + провайдер для Sentry + stdout провайдер.
func NewLoggerDefault ¶
func NewLoggerDefault(config ProviderConfig, fieldsHandler FieldsHandler) Logger
NewLoggerDefault создает логгер с конфигурацией по умолчанию. Использует fmtProvider как единственный провайдер вывода. Удобен для быстрого старта и разработки.
type LoggerConfig ¶
type LoggerConfig struct {
}
LoggerConfig defines base configuration for all loggers and providers. Contains common settings that apply to all logging components.
type LoggerProvider ¶
type LoggerProvider interface {
// Write записывает лог-сообщение с указанным уровнем, текстом и дополнительными полями.
// Возвращает ошибку в случае проблем при записи.
Write(ctx context.Context, level Level, message string, fields Fields) error
// ShouldLog проверяет, нужно ли логировать сообщение данного уровня.
// Используется для фильтрации логов по уровню важности.
ShouldLog(ctx context.Context, level Level) bool
// Close освобождает ресурсы провайдера. Должен вызываться при завершении работы приложения.
Close(ctx context.Context) error
}
LoggerProvider определяет интерфейс для провайдеров логирования. Провайдеры отвечают за запись логов в конкретные места назначения (консоль, файл, Loki и т.д.).
func NewFmtProvider ¶
func NewFmtProvider(config ProviderConfig) LoggerProvider
NewFmtProvider создает новый экземпляр fmtProvider с заданной конфигурацией. Возвращает интерфейс LoggerProvider для использования в системе логирования.
type ProviderConfig ¶
type ProviderConfig struct {
LoggerConfig // Embedded base logger configuration
Level Level // Provider-specific log level
}
ProviderConfig extends LoggerConfig with provider-specific settings. Embeds common configuration and adds provider-specific parameters.