我正在尝试学习独白,并且正在关注本教程:https://stackify.com/php-monolog-tutorial/
说
首先,在创建记录器时,应包括频道名称,以便您可以区分记录器列表。
$ logger = new MonologLogger('channel-name'); $ app->容器-> logger = $ logger;
在上面的示例中,每个日志条目中都应包含“渠道名称”。这样,您可以轻松查找和过滤条目。为每个组件创建另一个通道。这些渠道的示例可能包括“数据库”,“安全”,“业务”等。
那么渠道到底是什么,我应该如何使用它们?
答案 0 :(得分:1)
这里的“通道”不是通用的PHP概念,它只是monolog用于您要记录的消息类别的术语。
来自the monolog usage documentation:
您可以创建许多Logger,每个Logger定义一个通道(例如:db,request,router等),并且每个Logger都结合了各种处理程序,这些处理程序可以共享也可以不共享。该通道反映在日志中,使您可以轻松查看或过滤记录。
在该页面的下方,有another section on using channels:
通道是识别记录与应用程序的哪一部分相关的好方法。这在大型应用程序中很有用(并由Symfony中的MonologBundle利用)。
图两个记录器共享一个写入单个日志文件的处理程序。通过渠道,您可以识别发布每个记录的记录器。您可以通过过滤该通道的日志文件轻松地grep。
答案 1 :(得分:1)
简单来说,您可以将通道定义为单独的日志文件。
通常,您可能需要对不同服务或模块的日志文件进行分类。
为此,Monolog允许您创建不同的通道,每个通道可以分别记录到不同的文件,并允许您配置每个通道的日志。
您所指的行中
$logger = new MonologLogger('channel-name');
$app->container->logger = $logger;
您要在Monologger的构造函数中指定频道。
无论何时使用此$ logger对象,它都会写入配置通道时指定的文件。以下是Symfony文档中的通道配置示例
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”。