Monolog: отправлять ошибки в Sentry с сохраненными записями журнала нижнего уровня

Цель:

Я хочу отправить все записи ERROR + Monolog в Sentry вместе с записями более низкого уровня (для упрощения отладки происходящего), и все они должны быть отправлены как одно событие.

Что я имею:

У меня есть приложение Symfony4 с config/packages/prod/monolog.yaml:

monolog:
handlers:
# there is also fingers_crossed for file logging, but it is rather not related

sentry_buffer:
type: fingers_crossed
action_level: error
handler: sentry_transparent
# ignore records logged by exception listener
channels: ["!exceptions"]
sentry_transparent:
type: whatfailuregroup
members: [sentry]
sentry:
type:  raven
# Use Sentry client registered by SentryBundle
client_id: sentry.client
level: debug
auto_log_stacks: true

У меня есть пользовательский обработчик исключений, который создает ответ JSON, но перед отправкой он также регистрирует ошибку в exceptions канал (поэтому я исключаю этот канал в fingers_crossed обработчик, поэтому я не получаю дубликаты.

Он работает локально — события Sentry создаются только тогда, когда в Монологе происходят записи ERROR +, и все собранные журналы присоединяются в контексте записи.

Каким-то образом на производстве у нас есть maaaaaaany события с info уровень и не имеет смысла

введите описание изображения здесь

Эти события не связаны с какой-либо ошибкой, но в крошках я вижу, что произошла некоторая ошибка устаревания:

введите описание изображения здесь

Я пытался воспроизвести это с trigger_error как в ProcessBuilder (из панировочных сухарей), но что бы я ни делал, я не получаю информацию INFO в моем Страже.

Эти события происходят от длительных процессов (ставить потребителей в очередь), но я выполнил все шаги из производства (запрос, очередь обработки), и я не получил результат, как в нашем производственном экземпляре.

Любые предложения, что происходит? Как я могу улучшить наш конфиг, чтобы достичь того, что нам нужно, но без рассылки нашего Sentry событий, которые нам не нужны?

1

Решение

Решение было добавить BufferHandler между FingersCrossedHandler а также WhatFailureGroupHandler:

sentry_wait_for_error:
type:         fingers_crossed
action_level: error
handler:      sentry_buffer
excluded_http_codes:
4xx: ~
sentry_buffer: # All records must be sent at once!
type:    buffer
handler: sentry_failure_handler
sentry_failure_handler:
type: whatfailuregroup
members: [sentry]
sentry:
type:  raven
dsn: '%env(SENTRY_DSN)%'
level: debug
auto_log_stacks: true
release: '%env(APP_VERSION)%'
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]