# README
LogIt-Go
LogIt-Go - это мощная и гибкая библиотека для логирования в Go-приложениях, построенная на основе Zap и интегрированная с Sentry.
Особенности
- Высокопроизводительное логирование с использованием Zap
- Поддержка ротации логов
- Интеграция с Sentry для отслеживания ошибок
- Настраиваемые уровни логирования для консоли и файла
- Автоматическое генерирование ID трассировки
- Поддержка структурированного логирования
Установка
go get github.com/budka-tech/logit-go
Использование
Инициализация
import (
"github.com/budka-tech/logit-go"
"github.com/budka-tech/configo"
"github.com/budka-tech/envo"
)
func main() {
const op := "main"
appConf := &configo.App{...}
loggerConf := &configo.Logger{...}
senConf := &configo.Sentry{...}
env := envo.New()
logger := logit.MustNewLogger(appConf, loggerConf, senConf, env)
// Использование логгера
ctx := logger.NewTraceCtx(nil, &op)
logger.Info(ctx, "Приложение успешно запущено")
Логирование
const op := "module.submodule.Method"
ctx := logger.NewCtx(nil, &op, nil)
logger.Debug("Debug message")
logger.Info(ctx, "Info message")
logger.Warn(ctx, "Warning message")
logger.Error(ctx, err)
logger.Fatal(ctx, err)
Тестирование
Для использования в тестах предусмотрен пустой логгер
logger := logit.NewNopLogger()
Конфигурация логгера
Логгер принимает следующие параметры конфигурации:
App конфигурация (configo.App):
Name
: Имя приложенияVersion
: Версия приложения
Logger конфигурация (configo.Logger):
EnableConsole
: Включить вывод в консоль (bool)ConsoleLevel
: Уровень логирования для консоли (int)EnableFile
: Включить запись в файл (bool)FileLevel
: Уровень логирования для файла (int)Dir
: Директория для хранения лог-файловMaxSize
: Максимальный размер файла лога в мегабайтахMaxBackups
: Максимальное количество старых лог-файлов для храненияMaxAge
: Максимальное время хранения старых лог-файлов в дняхCompress
: Сжимать ротированные лог-файлы (bool)TimeFormat
: Формат времени для логовRotationTime
: Интервал ротации логов (например, "24h")
Sentry конфигурация (configo.Sentry):
Key
: Ключ проекта SentryHost
: Хост Sentry
Env конфигурация (envo.Env):
- Объект, представляющий текущее окружение
Пример конфигурации:
Go
appConf := &configo.App{
Name: "MyApp",
Version: "1.0.0",
}
loggerConf := &configo.Logger{
EnableConsole: true,
ConsoleLevel: int(zapcore.InfoLevel),
EnableFile: true,
FileLevel: int(zapcore.DebugLevel),
Dir: "/var/log/myapp",
MaxSize: 100,
MaxBackups: 3,
MaxAge: 28,
Compress: true,
TimeFormat: "2006-01-02 15:04:05",
RotationTime: "24h",
}
senConf := &configo.Sentry{
Key: "your-sentry-key",
Host: "sentry.io",
}
env := envo.New()
logger := logit.MustNewLogger(appConf, loggerConf, senConf, env)
Yaml
app:
name: "MyApp"
version: "1.0.0"
logger:
level: 0
dir: "logs"
maxSize: 10
maxBackups: 3
maxAge: 365
compress: true
rotationTime: "24h"
consoleLevel: 0
fileLevel: 0
enableConsole: true
enableFile: true
timeFormat: "2006-01-02T15:04:05.000Z07:00"
Описание полей
App конфигурация
Параметр | Описание |
---|---|
name | Имя приложения |
version | Версия приложения |
Logger конфигурация
Параметр | Описание | Тип | Значение по умолчанию |
---|---|---|---|
level | Общий уровень логирования | int | 0 |
dir | Директория для хранения лог-файлов | string | "logs" |
maxSize | Максимальный размер файла лога в мегабайтах | int | 10 |
maxBackups | Максимальное количество старых лог-файлов для хранения | int | 3 |
maxAge | Максимальное время хранения старых лог-файлов в днях | int | 365 |
compress | Сжимать ротированные лог-файлы | bool | true |
rotationTime | Интервал ротации логов | string | "24h" |
consoleLevel | Уровень логирования для консоли | int | 0 |
fileLevel | Уровень логирования для файла | int | 0 |
enableConsole | Включить вывод в консоль | bool | true |
enableFile | Включить запись в файл | bool | true |
timeFormat | Формат времени для логов | string | "2006-01-02T15:04:05.000Z07:00" |
# Functions
No description provided by the author
No description provided by the author
NewTimeRotatingWriter создает новый TimeRotatingWriter.
# Structs
No description provided by the author
# Interfaces
No description provided by the author