Обработчики

Дата обновления перевода 2024-07-25

Обработчики

ElasticsearchLogstashHandler

Этот обработчик работает напрямую с HTTP интерфейсом Elasticsearch. Это означает, что он замедлит ваше приложение, если Elasticsearch понадобится время для ответа. Даже если все HTTP-вызовы будут произведены асинхронно.

1
2
3
4
5
6
7
8
9
10
11
12
13
# config/services.yaml
services:
    Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler: ~

    # опционально, сконфигурируйте обработчик, используя аргументы конструктора (отображённые значения - это значения по умолчанию)
    Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler:
        arguments:
            $endpoint: "http://127.0.0.1:9200"
            $index: "monolog"
            $client: null
            $level: !php/enum Monolog\Level::Debug
            $bubble: true
            $elasticsearchVersion: '1.0.0'

Затем сошлитесь на него в конфигурации Monolog:

В окружении разработки можно оставить конфигурацию по умолчанию: для каждого лога будет выполняться HTTP-запрос для отправки лога в Elasticsearch:

1
2
3
4
5
6
# config/packages/prod/monolog.yaml
monolog:
    handlers:
        es:
            type: service
            id: Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler

В окружении производства настоятельно рекомендуется обернуть этот обработчик возможностями буферизации (например, FingersCrossedHandler или BufferHandler), чтобы вызывать Elasticsearch только один раз при массовом пуше. Для еще большей производительности и отказоустойчивости рекомендуется использовать соответствующий стек ELK.

1
2
3
4
5
6
7
8
9
10
# config/packages/prod/monolog.yaml
monolog:
    handlers:
        main:
            type: fingers_crossed
            handler: es

        es:
            type: service
            id: Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler