Дата обновления перевода 2021-09-28

Обработчики

ElasticsearchLogstashHandler

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

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

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

Чтобы использовать его, объявите его сервисом:

  • YAML
    1
    2
    3
    # config/services.yaml
    services:
        Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler: ~
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    <!-- config/services.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:monolog="http://symfony.com/schema/dic/monolog"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/monolog
            https://symfony.com/schema/dic/monolog/monolog-1.0.xsd">
    
        <services>
            <service id="Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler"/>
        </services>
    </container>
    
  • PHP
    1
    2
    3
    4
    // config/services.php
    use Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler;
    
    $container->register(ElasticsearchLogstashHandler::class);
    

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

  • YAML
    1
    2
    3
    4
    5
    6
    # config/packages/prod/monolog.yaml
    monolog:
        handlers:
            es:
                type: service
                id: Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <!-- config/packages/prod/monolog.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:monolog="http://symfony.com/schema/dic/monolog"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/monolog
            https://symfony.com/schema/dic/monolog/monolog-1.0.xsd">
    
        <monolog:config>
            <monolog:handler
                name="es"
                type="service"
                id="Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler"
            />
        </monolog:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    // config/packages/prod/monolog.php
    use Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler;
    use Symfony\Config\MonologConfig;
    
    return static function (MonologConfig $monolog) {
        $monolog->handler('es')
            ->type('service')
            ->id(ElasticsearchLogstashHandler::class)
        ;
    };
    

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.