Monologger中的“渠道”是什么?

时间:2018-11-27 13:28:09

标签: php monolog

我正在尝试学习独白,并且正在关注本教程:https://stackify.com/php-monolog-tutorial/

  

首先,在创建记录器时,应包括频道名称,以便您可以区分记录器列表。

     

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

     

在上面的示例中,每个日志条目中都应包含“渠道名称”。这样,您可以轻松查找和过滤条目。为每个组件创建另一个通道。这些渠道的示例可能包括“数据库”,“安全”,“业务”等。

那么渠道到底是什么,我应该如何使用它们?

2 个答案:

答案 0 :(得分:1)

这里的“通道”不是通用的PHP概念,它只是monolog用于您要记录的消息类别的术语。

来自the monolog usage documentation

  

您可以创建许多Logger,每个Logger定义一个通道(例如:db,request,router等),并且每个Logger都结合了各种处理程序,这些处理程序可以共享也可以不共享。该通道反映在日志中,使您可以轻松查看或过滤记录。

在该页面的下方,有another section on using channels

  

通道是识别记录与应用程序的哪一部分相关的好方法。这在大型应用程序中很有用(并由Symfony中的MonologBu​​ndle利用)。

     

图两个记录器共享一个写入单个日志文件的处理程序。通过渠道,您可以识别发布每个记录的记录器。您可以通过过滤该通道的日志文件轻松地grep。

答案 1 :(得分:1)

简单来说,您可以将通道定义为单独的日志文件。

通常,您可能需要对不同服务或模块的日志文件进行分类。

为此,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”。