logrus

package module
v1.0.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Jun 17, 2026 License: MIT Imports: 7 Imported by: 0

README

Compogo Logrus

Go Reference

Адаптер Logrus для фреймворка Compogo.

Реализует интерфейс compogo.Logger через Logrus с поддержкой:

  • Иерархических логгеров (GetLogger)
  • Метрик Prometheus (счётчики по уровням логирования)
  • Гибкой конфигурации через Compogo
  • Разделения stdout/stderr

Установка

go get github.com/Compogo/logrus

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

package main

import (
    "github.com/Compogo/compogo"
    "github.com/Compogo/logrus"
)

func main() {
    app := compogo.NewApp("myapp",
        logrus.WithLogrus(),
        compogo.WithConfigurator(configurator, configuratorCmp),
        compogo.WithContainer(container, containerCmp),
        compogo.WithOsSignalCloser(),
    )

    if err := app.Serve(); err != nil {
        panic(err)
    }
}

Использование

Базовое логирование
// Логирование с разными уровнями
logger.Info("Application started")
logger.Warn("Memory usage is high")
logger.Error("Failed to connect to database")
logger.Debug("Request details", "path", "/api/v1")
Иерархические логгеры
// Создание вложенных логгеров
httpLogger := logger.GetLogger("http")
dbLogger := logger.GetLogger("database")

httpLogger.Info("Server listening on :8080") // "[http] Server listening on :8080"
dbLogger.Info("Connected to PostgreSQL")     // "[database] Connected to PostgreSQL"

// Вложенность: compogo -> myapp -> http
appLogger := logger.GetLogger("compogo").GetLogger("myapp")
appLogger.Info("Starting") // "[compogo][myapp] Starting"

Конфигурация через флаги

# Уровень логирования
go run main.go --logger.level=debug

# Метрики для каких уровней собирать
go run main.go --logger.metric.levels=panic,error,warn,info

Метрики Prometheus

Пакет предоставляет готовый компонент метрики для счётчиков логов по уровням.

Метрика:
compogo_log_level_count{app="myapp",level="error"} 5
compogo_log_level_count{app="myapp",level="warn"} 12
compogo_log_level_count{app="myapp",level="info"} 42
Настройка через конфигурацию:
// По умолчанию собираются только panic, error, warn
// Можно настроить через флаг или конфиг
configurator.SetDefault("logger.metric.levels", []string{"panic", "error", "warn", "info"})

API

Logger

Реализует интерфейс compogo.Logger:

type Logger interface {
    // Уровни логирования
    Panicf(string, ...interface{})
    Panic(...interface{})
    Errorf(string, ...interface{})
    Error(...interface{})
    Warnf(string, ...interface{})
    Warn(...interface{})
    Infof(string, ...interface{})
    Info(...interface{})
    Debugf(string, ...interface{})
    Debug(...interface{})
    Printf(string, ...interface{})
    Print(...interface{})

    // Иерархия
    GetLogger(name string) Logger
}
Дополнительные методы
// Установка уровня логирования
logger.SetLevel(compogo.Debug) error

// Добавление своего хука Logrus
logger.AddHook(hook logrus.Hook)

// Доступ к внутренним логгерам
logger.GetStdOut() *logrus.Logger
logger.GetStdErr() *logrus.Logger

Зависимости

  • Compogo — основной фреймворк
  • Logrus — библиотека логирования
  • Prometheus — метрики

Лицензия

MIT License

Copyright (c) 2026 Compogo

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithLogrus

func WithLogrus() compogo.Option

WithLogrus возвращает опцию для подключения Logrus к приложению Compogo.

Пример:

app := compogo.NewApp("myapp",
    logrus.WithLogrus(),
    // другие опции...
)

Types

type Logger added in v0.0.14

type Logger struct {
	// contains filtered or unexported fields
}

Logger реализует интерфейс compogo.Logger на основе Logrus. Поддерживает иерархическую структуру логгеров через GetLogger, раздельные потоки вывода (stdout/stderr) и добавление хуков.

Иерархия:

  • Корневой логгер создаётся через NewLogger()
  • Вложенные логгеры создаются через GetLogger()
  • Каждый вложенный логгер добавляет префикс [имя] к сообщениям

Пример:

logger := NewLogger()
httpLogger := logger.GetLogger("http")
httpLogger.Info("Server started") // выведет: "[http] Server started"

func NewLogger added in v0.0.14

func NewLogger() *Logger

NewLogger создаёт новый корневой логгер. Настраивает вывод в stdout/stderr и устанавливает TextFormatter.

Пример:

logger := NewLogger()
logger.Info("Application started")

func (*Logger) AddHook added in v0.0.14

func (logger *Logger) AddHook(hook logrus.Hook)

AddHook добавляет хук Logrus к обоим логгерам (stdout и stderr). Используется для добавления метрик, сентинел и других расширений.

Пример:

logger.AddHook(&MetricHook{})

func (*Logger) Debug added in v0.0.14

func (logger *Logger) Debug(i ...interface{})

Debug логирует сообщение с уровнем Debug.

func (*Logger) Debugf added in v0.0.14

func (logger *Logger) Debugf(s string, i ...interface{})

Debugf логирует форматированное сообщение с уровнем Debug.

func (*Logger) Error added in v0.0.14

func (logger *Logger) Error(i ...interface{})

Error логирует сообщение с уровнем Error.

func (*Logger) Errorf added in v0.0.14

func (logger *Logger) Errorf(s string, i ...interface{})

Errorf логирует форматированное сообщение с уровнем Error.

func (*Logger) GetLogger added in v0.0.14

func (logger *Logger) GetLogger(name string) compogo.Logger

GetLogger возвращает дочерний логгер с указанным именем. Дочерние логгеры кэшируются и переиспользуются. Сообщения от дочерних логгеров получают префикс [имя].

Реализует интерфейс compogo.Logger.

Пример:

httpLogger := logger.GetLogger("http")
httpLogger.Info("Server started") // "[http] Server started"

func (*Logger) GetStdErr added in v0.0.14

func (logger *Logger) GetStdErr() *logrus.Logger

GetStdErr возвращает внутренний логгер для stderr. Позволяет напрямую работать с Logrus-логгером.

func (*Logger) GetStdOut added in v0.0.14

func (logger *Logger) GetStdOut() *logrus.Logger

GetStdOut возвращает внутренний логгер для stdout. Позволяет напрямую работать с Logrus-логгером.

func (*Logger) Info added in v0.0.14

func (logger *Logger) Info(i ...interface{})

Info логирует сообщение с уровнем Info.

func (*Logger) Infof added in v0.0.14

func (logger *Logger) Infof(s string, i ...interface{})

Infof логирует форматированное сообщение с уровнем Info.

func (*Logger) Panic added in v0.0.14

func (logger *Logger) Panic(i ...interface{})

Panic логирует сообщение с уровнем Panic и вызывает panic.

func (*Logger) Panicf added in v0.0.14

func (logger *Logger) Panicf(s string, i ...interface{})

Panicf логирует сообщение с уровнем Panic и вызывает panic.

func (*Logger) Print added in v0.0.14

func (logger *Logger) Print(i ...interface{})

Print логирует сообщение без уровня (аналог fmt.Print).

func (*Logger) Printf added in v0.0.14

func (logger *Logger) Printf(s string, i ...interface{})

Printf логирует форматированное сообщение без уровня (аналог fmt.Printf).

func (*Logger) SetLevel added in v0.0.14

func (logger *Logger) SetLevel(level compogo.Level) error

SetLevel устанавливает уровень логирования для stdout и stderr.

Пример:

logger.SetLevel(compogo.Debug)

func (*Logger) Warn added in v0.0.14

func (logger *Logger) Warn(i ...interface{})

Warn логирует сообщение с уровнем Warn.

func (*Logger) Warnf added in v0.0.14

func (logger *Logger) Warnf(s string, i ...interface{})

Warnf логирует форматированное сообщение с уровнем Warn.

Directories

Path Synopsis
infrastructure

Jump to

Keyboard shortcuts

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