logger

package
v1.1.2 Latest Latest
Warning

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

Go to latest
Published: Oct 6, 2023 License: MIT Imports: 10 Imported by: 0

README

Логирование.

Компонент основан на пакете https://github.com/sirupsen/logrus.

Объект конфигурации.
type Config struct {
	Level string
}

Описание полей:

Поле Описание Значение по умолчанию Доступные значения
Level Уровень логов, который будет писаться, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --logger.level
- переменная окружения LOGGER_LEVEL
- значение в конфиг файле logger.level
error - debug
- info
- warn
- error
Метрики.

Компонент логирования ведет следующие метрики:

log_level_count - кол. залогированных сообщений. Доступные лейблы в метрике:

  • app - имя приложения;
  • level - уровень лога сообщения.

Компонент логирования умеет автоматически отправлять логи во внешние системы:

ЛПА.

Объект конфигурации.

type Config struct {
	Host   string
	Port   uint16
	Levels []string
}

Описание полей:

Поле Описание Значение по умолчанию Доступные значения
Host Хост подключения к лпа, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --logger.lpa.host
- переменная окружения LOGGER_LPA_HOST
- значение в конфиг файле logger.lpa.host
Port Порт подключения к лпа, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --logger.lpa.port
- переменная окружения LOGGER_LPA_PORT
- значение в конфиг файле logger.lpa.port
Levels Уровень логов для отправки в лпа, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --logger.lpa.port
- переменная окружения LOGGER_LPA_PORT
- значение в конфиг файле logger.lpa.port
debug, info, warn, error - debug
- info
- warn
- error
Sentry.

Объект конфигурации.

type Config struct {
	DSN string
}

Описание полей:

Поле Описание Значение по умолчанию
DSN Строка подключения к Sentry, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --logger.sentry.dsn
- переменная окружения LOGGER_SENTRY_DSN
- значение в конфиг файле logger.sentry.dsn

Documentation

Index

Constants

View Source
const (
	LevelFieldName = "logger.level"

	LevelDefault = level.Error
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		configurator.Component,
		closer.OsSignalComponent,
	},
	Constructor: func(container container.Container) error {
		return container.Provides(
			NewConfig,
			NewReConfigurationWithConfigurator,
			func(l *ReConfiguration) *logrus.Logger { return l.Logger },
			func(l *ReConfiguration) Logger { return l },
			func(l *ReConfiguration) Debuger { return l },
			func(l *ReConfiguration) Informer { return l },
			func(l *ReConfiguration) Warner { return l },
			func(l *ReConfiguration) Printer { return l },
		)
	},
	BindFlags: func(flagSet *pflag.FlagSet, container container.Container) error {
		return container.Invoke(func(config *Config) {
			flagSet.StringVar(&config.Level, LevelFieldName, LevelDefault, "setting log level")
		})
	},
	Serve: func(c container.Container) error {
		logger, err := container.Get[*ReConfiguration](c)
		if err != nil {
			return err
		}

		reConfiguration, err := container.Get[configurator.ReConfiguration](c)
		if err != nil {
			return err
		}

		reConfiguration.Registration(logger)
		logger.Info("logger: registration in the reConfigurator")

		closer, err := container.Get[closer.Closer](c)
		if err != nil {
			return err
		}

		appConfig, err := container.Get[*app.Config](c)
		if err != nil {
			return err
		}

		logger.Infof("app: '%s', pid '%d' - started", appConfig.Name, appConfig.PID)

		ctx, cancelFunc := context.WithCancel(closer.GetContext())
		defer cancelFunc()

		<-ctx.Done()

		logger.Infof("app: '%s', pid '%d' - shutdown", appConfig.Name, appConfig.PID)

		return nil
	},
}

Functions

func New

func New(config *Config) (*logrus.Logger, error)

func NewWithConfigurator

func NewWithConfigurator(config *Config, configurator configurator.Configurator) (*logrus.Logger, error)

Types

type Config

type Config struct {
	Level string
}

func Configuration

func Configuration(config *Config, configurator configurator.Configurator) *Config

func NewConfig

func NewConfig() *Config

type Debuger

type Debuger interface {
	Debugf(string, ...interface{})
	Debug(...interface{})
}

Debuger : "debug" level recorder interface.

type Informer

type Informer interface {
	Infof(string, ...interface{})
	Info(...interface{})
}

Informer : "info" level recorder interface.

type Logger

type Logger interface {
	Debuger
	Informer
	Warner
	Printer

	Errorf(string, ...interface{})
	Error(...interface{})
}

Logger : General logger interface for any implementation.

type Printer

type Printer interface {
	Print(...interface{})
}

type ReConfiguration

type ReConfiguration struct {
	*logrus.Logger
	// contains filtered or unexported fields
}

func NewReConfiguration

func NewReConfiguration(config *Config) (*ReConfiguration, error)

func NewReConfigurationWithConfigurator

func NewReConfigurationWithConfigurator(config *Config, configurator configurator.Configurator) (*ReConfiguration, error)

func (*ReConfiguration) ReConfiguration

func (reConfiguration *ReConfiguration) ReConfiguration(configurator configurator.Configurator) error

type Warner

type Warner interface {
	Warnf(string, ...interface{})
	Warn(...interface{})
}

Warner : "warning" level recorder interface.

Directories

Path Synopsis
hook
lpa

Jump to

Keyboard shortcuts

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