Categorygithub.com/budka-tech/logit-go
modulepackage
0.1.7
Repository: https://github.com/budka-tech/logit-go.git
Documentation: pkg.go.dev

# 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: Ключ проекта Sentry
  • Host: Хост 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Общий уровень логированияint0
dirДиректория для хранения лог-файловstring"logs"
maxSizeМаксимальный размер файла лога в мегабайтахint10
maxBackupsМаксимальное количество старых лог-файлов для храненияint3
maxAgeМаксимальное время хранения старых лог-файлов в дняхint365
compressСжимать ротированные лог-файлыbooltrue
rotationTimeИнтервал ротации логовstring"24h"
consoleLevelУровень логирования для консолиint0
fileLevelУровень логирования для файлаint0
enableConsoleВключить вывод в консольbooltrue
enableFileВключить запись в файлbooltrue
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