sgloggerloki

package module
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 1, 2025 License: MIT Imports: 5 Imported by: 1

README

seri-go-logger-loki

Пакет для интеграции seri-go-logger с Grafana Loki - горизонтально-масштабируемой системой агрегации логов.

Возможности

  • 📊 Поддержка всех уровней логирования: Debug, Info, Warn, Error, Fatal
  • 🏷️ Автоматическое добавление лейблов: job, app, level
  • 🔧 Гибкая конфигурация: настраиваемые уровни логирования и параметры подключения
  • 🚀 Асинхронная отправка: не блокирует основное приложение
  • 🔍 Интеграция с контекстом: поддержка trace_id и других метаданных

Установка

go get github.com/SergeiKhanlarov/seri-go-logger-loki

Быстрый старт

Базовая настройка

package main

import (
    "context"
    
	sglogger "github.com/SergeiKhanlarov/seri-go-logger"
	sgloki "github.com/SergeiKhanlarov/seri-go-logger-loki"
)

func main() {
    ctx := context.Background()
    
    // Конфигурация Loki клиента
    lokiConfig := clients.LokiConfig{
        lokiUrl: "http://localhost:3100",
        job:     "user-service",
        app:     "authentication",
    }
    
    // Создание клиента Loki
    lokiClient := clients.NewLokiClient(lokiConfig)
    
    // Конфигурация провайдера
    providerConfig := sgloggerloki.ProviderConfig{
        LoggerConfig: sglogger.LoggerConfig{},
        Level: sglogger.LevelInfo,
    }
    
    // Создание провайдера
    provider := sgloggerloki.NewLokiProvider(providerConfig, lokiClient)
    
    // Создание логгера
    logger := sglogger.NewLogger(
		sglogger.LoggerConfig{}, 
		sglogger.NewFieldsHandler(),
		provider)
    
    // Использование логгера
    logger.Info(ctx, "Приложение запущено", sglogger.Fields{
        "version": "1.0.0",
        "port":    8080,
    })
}
Структура пакета

Компоненты

  1. LokiClient

Интерфейс для отправки логов в Loki:

type LokiClient interface {
    SendLog(level, message string, params map[string]interface{}) error
}
  1. LokiProvider

Провайдер для интеграции с seri-go-logger:

type LoggerProvider interface {
    Write(ctx context.Context, level Level, message string, fields Fields) error
    ShouldLog(ctx context.Context, level Level) bool
    Close(ctx context.Context) error
}

Конфигурация

Уровни логирования

LevelDebug (0) - Отладочные сообщения
LevelInfo (1) - Информационные сообщения
LevelWarn (2) - Предупреждения
LevelError (3) - Ошибки
LevelFatal (4) - Критические ошибки

📄 Лицензия

MIT License - смотрите файл LICENSE для деталей.

Copyright (c) 2025 Ханларов Сергей

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewLokiProvider

func NewLokiProvider(config ProviderConfig, lokiClient clients.LokiClient) sglogger.LoggerProvider

NewLokiProvider создает новый провайдер для отправки логов в Loki

Параметры:

  • config: конфигурация провайдера (уровень логирования и другие настройки)
  • lokiClient: клиент для взаимодействия с Loki

Возвращает:

  • sglogger.LoggerProvider: интерфейс провайдера логирования

Пример использования:

config := sgloggerloki.ProviderConfig{
    Level: sglogger.LevelInfo,
}
lokiConfig := clients.LokiConfig{
    LokiURL: "http://localhost:3100",
    Job:     "my-service",
    App:     "user-api",
}
client := clients.NewLokiClient(lokiConfig)
provider := sgloggerloki.NewLokiProvider(config, client)
logger := sglogger.NewLogger(provider)

Types

type ProviderConfig

type ProviderConfig struct {
	sglogger.LoggerConfig                // Встроенная базовая конфигурация логгера
	Level                 sglogger.Level // Специфичный для провайдера уровень логирования
}

ProviderConfig расширяет базовую конфигурацию логгера специфичными для провайдера настройками. Встраивает общую конфигурацию логгера и добавляет параметры, специфичные для конкретного провайдера.

Структура объединяет:

  • sglogger.LoggerConfig - базовая конфигурация логгера (уровни логирования, формат, выходные потоки)
  • level - специфичный для провайдера уровень логирования, который может отличаться от общего уровня

Пример использования:

config := &ProviderConfig{
    LoggerConfig: sglogger.LoggerConfig{...},
    level:        sglogger.LevelDebug,
}

func (*ProviderConfig) GetLevel

func (p *ProviderConfig) GetLevel() string

GetLevel возвращает строковое представление уровня логирования провайдера. Используется для совместимости с системами, которые ожидают строковые значения уровней логирования.

Возвращаемые значения:

  • "debug" - для уровня отладки (LevelDebug)
  • "info" - для информационного уровня (LevelInfo)
  • "warning" - для предупреждений (LevelWarn)
  • "error" - для ошибок (LevelError)
  • "critical" - для критических ошибок (LevelFatal)
  • "info" - значение по умолчанию, если уровень не распознан

Пример:

level := config.GetLevel() // возвращает "debug", "info", etc.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL