Что такое канал в Monologger?

Я пытаюсь изучить Monolog и следую этому руководству: https://stackify.com/php-monolog-tutorial/

Это говорит

Во-первых, когда вы создаете регистратор, необходимо указать имя канала, чтобы вы могли различать свой список регистраторов.

$ logger = новый MonologLogger ('имя-канала'); $ app-> container-> logger = $ logger;

В приведенном выше примере «название канала» должно быть включено в каждую запись журнала. Таким образом, вы можете легко найти и отфильтровать записи; создайте еще один канал для каждого компонента. Примеры этих каналов могут включать «базу данных», «безопасность», «бизнес» и другие.

Так что же такое каналы и как их использовать?


person anneteka    schedule 27.11.2018    source источник
comment
symfony.com/doc/current/logging/channels_handlers.html   -  person ggdx    schedule 27.11.2018


Ответы (2)


Канал здесь не является общей концепцией PHP, это просто термин, который monolog использует для категории сообщений, которые вы хотите регистрировать.

Из документации по использованию монолога:

Вы можете создать множество регистраторов, каждый из которых определяет канал (например: db, request, router, ...), и каждый из них объединяет различные обработчики, которые могут быть общими или нет. Канал отражается в журналах и позволяет легко просматривать или фильтровать записи.

Ниже по этой странице есть еще один раздел, посвященный используя каналы:

Каналы - отличный способ определить, к какой части приложения относится запись. Это полезно в больших приложениях (и используется MonologBundle в Symfony).

Представьте себе два регистратора, совместно использующих обработчик, который записывает в один файл журнала. Каналы позволят вам идентифицировать регистратор, который выдал каждую запись. Вы можете легко просмотреть файлы журнала, фильтруя тот или иной канал.

person IMSoP    schedule 27.11.2018

Проще говоря, вы можете определить канал как отдельный файл журнала.

Как правило, вам может потребоваться классифицировать файлы журнала для различных служб или модулей.

Для этого Monolog позволяет создавать разные каналы, каждый из которых может вести журнал отдельно в разные файлы, и позволяет настраивать журнал для каждого канала.

В строке, которую вы имеете в виду

 $logger = new MonologLogger('channel-name'); 
 $app->container->logger = $logger;

Вы указываете канал в конструкторе Monologger.

Каждый раз, когда вы используете этот объект $ logger, он будет записывать в файл, который вы указали при настройке канала. Ниже приведен пример из документации Symfony для конфигурации канала.

https://symfony.com/doc/current/logging/channels_handlers.html#switching-a-channel-to-a-different-handler.

   monolog:
      handlers:
          security:
             # log all messages (since debug is the lowest level)
             level:    debug
             type:     stream
             path:     '%kernel.logs_dir%/security.log'
             channels: [security]

В этом случае вы должны сделать это в своем коде, чтобы использовать канал

 $logger = new MonologLogger('security');

И тогда вы войдете в «security.log» с ошибками типа «поток» уровня «отладка».

person user6437700    schedule 27.11.2018