Как определеить пользовательский форматировщик логирования

Каждый обработчик логирования использует Formatter, чтобы форматировать запись перед тем, как её логировать. Все обработчики Monolog по умолчанию используют экземпляр Monolog\Formatter\LineFormatter,, но вы можете с лёгкостью заменить его. Ваш форматировщик должен релизовывать Monolog\Formatter\FormatterInterface.

Например, чтобыиспользовать встроенный JsonFormatter, зарегистрируйте его как сервис, а потом сконфигурируйте ваш обработчик так, чтобы он его использовал:

  • YAML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    # app/config/services.yml
    services:
        # ...
    
        Monolog\Formatter\JsonFormatter: ~
    
    # app/config/config_prod.yml (and/or config_dev.yml)
    monolog:
        handlers:
            file:
                type: stream
                level: debug
                formatter: Monolog\Formatter\JsonFormatter
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <!-- app/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
            http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/monolog
            http://symfony.com/schema/dic/monolog/monolog-1.0.xsd">
    
        <services>
            <service id="Monolog\Formatter\JsonFormatter" />
        </services>
    
        <!-- app/config/config_prod.xml (and/or config_dev.xml) -->
        <monolog:config>
            <monolog:handler
                name="file"
                type="stream"
                level="debug"
                formatter="Monolog\Formatter\JsonFormatter"
            />
        </monolog:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    // app/config/config.php
    use Monolog\Formatter\JsonFormatter;
    
    // app/config/services.php
    $container->register(JsonFormatter::class);
    
    // app/config/config_prod.php (or config_dev.php)
    $container->loadFromExtension('monolog', array(
        'handlers' => array(
            'file' => array(
                'type'      => 'stream',
                'level'     => 'debug',
                'formatter' => JsonFormatter::class',
            ),
        ),
    ));
    

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