Documentation
¶
Index ¶
Constants ¶
const (
// LevelFieldName — имя поля в метрике для уровня логирования.
LevelFieldName = "level"
)
Константы для метрик.
const LevelNamesFieldName = "logger.metric.levels"
LevelNamesFieldName — имя поля в конфигурации для уровней метрик.
Variables ¶
var LevelNamesDefault = []string{compogo.Panic.String(), compogo.Error.String(), compogo.Warn.String()}
LevelNamesDefault — уровни по умолчанию: Panic, Error, Warn.
var LogrusMetricComponent = compogo.Component{ Name: "logger.Logrus.metrics", Init: compogo.StepFunc(func(container compogo.Container) error { return container.Provides( NewConfig, NewMetricHook, ) }), BindFlags: compogo.BindFlags(func(flagSet flag.FlagSet, container compogo.Container) error { return container.Invoke(func(config *Config) { flagSet.StringArrayVar(&config.levelNames, LevelNamesFieldName, LevelNamesDefault, "") }) }), Configuration: compogo.StepFunc(func(container compogo.Container) error { return container.Invoke(Configuration) }), PreExecute: compogo.StepFunc(func(container compogo.Container) error { return container.Invoke(func(decorator *logrus.Logger, hook *MetricHook) { decorator.AddHook(hook) }) }), }
LogrusMetricComponent — компонент метрик для Logrus. Добавляет флаги для настройки метрик и устанавливает хук в логгер.
Functions ¶
This section is empty.
Types ¶
type Config ¶
Config содержит конфигурацию метрик логгера.
func Configuration ¶
func Configuration(config *Config, configurator compogo.Configurator) (*Config, error)
Configuration загружает конфигурацию метрик из Configurator. Парсит имена уровней в значения Logrus.
type MetricHook ¶
type MetricHook struct {
// contains filtered or unexported fields
}
MetricHook реализует хук Logrus для сбора метрик Prometheus. Считает количество логов каждого уровня.
Метрика: compogo_log_level_count{app="myapp", level="error"}
func NewMetricHook ¶
func NewMetricHook(appConfig *compogo.Config, config *Config) *MetricHook
NewMetricHook создаёт новый хук для метрик. Регистрирует счётчик для каждого уровня из конфигурации.
Пример:
hook := NewMetricHook(appConfig, config) logger.AddHook(hook)
func (*MetricHook) Fire ¶
func (metric *MetricHook) Fire(entry *logrus.Entry) error
Fire вызывается при каждом логировании. Увеличивает счётчик для соответствующего уровня.
func (*MetricHook) Levels ¶
func (metric *MetricHook) Levels() []logrus.Level
Levels возвращает уровни, на которых активируется хук.