sentry

package
v1.64.11 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2026 License: MIT Imports: 10 Imported by: 0

README

Package sentry

Пакет sentry предоставляет интеграцию с Sentry SDK для централизованного сбора и отправки ошибок и событий, с возможностью обогащения контекста через context.Context и функции обогащения событий.

Types

Config

Конфигурация для sentry

Fields:

Enable bool

Флаг включения Sentry.

Dsn string

DSN Sentry.

ModuleName string

Имя сервиса/модуля.

ModuleVersion string

Версия модуля.

Environment string

Окружение (например, prod, dev).

InstanceId string

Уникальный ID инстанса.

Tags map[string]string

Дополнительные произвольные теги.

Hub

Интерфейс Hub для отправки ошибок и событий.

Methods:

CatchError(ctx context.Context, err error, level log.Level)

Отправить ошибку с уровнем логирования.

CatchEvent(ctx context.Context, event *sentry.Event)

Отправить события напрямую.

Flush()

Подождать отправки всех событий.

EventEnrichment

Функция обогащения события — добавляет произвольные данные в sentry.Event.

Logger

  • Проксирует все методы логгера.

  • Автоматически отправляет события в Sentry, если уровень лога присутствует в supportedLevels.

  • Добавляет в событие:

    • уровень логирования,
    • requestId из контекста (если есть),
    • ошибку (если передана в лог),
    • данные обогащения из контекста.

Реализации Hub

SdkHub

Реальная обёртка над sentry.Hub. Отправляет события в Sentry SDK.

NoopHub

Заглушка, которая ничего не делает. Используется, если Sentry отключён.

Functions

func NewHubFromConfiguration(config Config) (Hub, error)

Создаёт Hub на основе конфигурации. Возвращает NoopHub, если Enable == false.

func EnrichEvent(ctx context.Context, enrichment EventEnrichment) context.Context

Добавляет функцию обогащения события в контекст. Используется для динамического расширения sentry.Event в Logger.

func WrapLogger(logger log.Logger, hub Hub, supportedLevels []log.Level) Logger

Оборачивает логгер, чтобы автоматически отправлять события в Sentry на указанных уровнях (supportedLevels).

func WrapErrorLogger(logger log.Logger, hub Hub) Logger

Упрощённый вариант WrapLogger, логирует только ошибки (log.LevelError).

Usage

Оборачивание логгера
wrappedLogger := sentry.WrapLogger(baseLogger, hub, []log.Level{log.LevelError, log.LevelFatal})
Обогащение событий
ctx = sentry.EnrichEvent(ctx, func(event *sentry.Event) {
	event.Extra["user_id"] = 12345
})
Использование с контекстом
hub.CatchError(ctx, err, log.LevelError)

Ошибка будет автоматически дополнена requestId и пользовательскими полями из EnrichEvent.

Documentation

Index

Constants

View Source
const (
	RequestIdKey = "requestId"
)

Variables

This section is empty.

Functions

func EnrichEvent

func EnrichEvent(ctx context.Context, enrichment EventEnrichment) context.Context

func EventFromLog

func EventFromLog(
	level sentry.Level,
	ctx context.Context,
	message any,
	fields ...log.Field,
) *sentry.Event

func SetException

func SetException(e *sentry.Event, exception error)

SetException Compare to sentry.Event.SetException, we don't add local stacktrace if there is no stack in error

Types

type Config

type Config struct {
	Enable        bool
	Dsn           string
	ModuleName    string
	ModuleVersion string
	Environment   string
	InstanceId    string
	Tags          map[string]string
}

type EventEnrichment

type EventEnrichment func(event *sentry.Event)

type Hub

type Hub interface {
	CatchError(ctx context.Context, err error, level log.Level)
	CatchEvent(ctx context.Context, event *sentry.Event)
	Flush()
}

func NewHubFromConfiguration

func NewHubFromConfiguration(config Config) (Hub, error)

nolint:ireturn

type Logger

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

func WrapErrorLogger

func WrapErrorLogger(logger log.Logger, hub Hub) Logger

func WrapLogger

func WrapLogger(logger log.Logger, hub Hub, supportedLevels []log.Level) Logger

func (Logger) Debug

func (s Logger) Debug(ctx context.Context, message any, fields ...log.Field)

func (Logger) Error

func (s Logger) Error(ctx context.Context, message any, fields ...log.Field)

func (Logger) Info

func (s Logger) Info(ctx context.Context, message any, fields ...log.Field)

func (Logger) Warn

func (s Logger) Warn(ctx context.Context, message any, fields ...log.Field)

type NoopHub

type NoopHub struct {
}

func NewNoopHub

func NewNoopHub() NoopHub

func (NoopHub) CatchError

func (n NoopHub) CatchError(ctx context.Context, err error, level log.Level)

func (NoopHub) CatchEvent

func (n NoopHub) CatchEvent(ctx context.Context, event *sentry.Event)

func (NoopHub) Flush

func (n NoopHub) Flush()

type SdkHub

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

func (SdkHub) CatchError

func (s SdkHub) CatchError(ctx context.Context, err error, level log.Level)

func (SdkHub) CatchEvent

func (s SdkHub) CatchEvent(ctx context.Context, event *sentry.Event)

func (SdkHub) Flush

func (s SdkHub) Flush()

Jump to

Keyboard shortcuts

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