📅  最后修改于: 2023-12-03 15:11:04.930000             🧑  作者: Mango
在Symfony中,我们可能需要拥有不止一个记录器,以便我们可以在不同的日志器中记录不同的信息。以下是如何注入多个记录器。
我们可以通过将channel关键字添加到monolog.yaml文件中来配置另一个记录器。
monolog:
channels: ["main", "additional"]
handlers:
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
additional:
type: stream
path: "%kernel.logs_dir%/additional.log"
在这里,我们定义了两个channels:main和additional。主通道仍使用默认的kernel日志文件,而additional通道将日志写入一个名为additional.log的文件中。
现在我们已经在monolog.yaml中定义了额外的通道,我们需要将其注入到我们的服务中。
services:
_defaults:
autowire: true
autoconfigure: true
App\Service\ExampleService:
arguments:
$mainLogger: '@monolog.logger.main'
$additionalLogger: '@monolog.logger.additional'
在这里,我们创建了一个名为ExampleService的服务,并注入了两个logger:mainLogger和additionalLogger。现在我们可以在ExampleService中使用这些记录器来记录不同的信息。
我们现在可以在我们的服务中使用注入的记录器了。可以使用以下方式记录日志:
class ExampleService
{
private $mainLogger;
private $additionalLogger;
public function __construct(LoggerInterface $mainLogger, LoggerInterface $additionalLogger)
{
$this->mainLogger = $mainLogger;
$this->additionalLogger = $additionalLogger;
}
public function doSomething()
{
// Log to main logger
$this->mainLogger->info('Doing something');
// Log to additional logger
$this->additionalLogger->info('Doing something additional');
}
}
在这里,我们可以使用主记录器记录标准信息,而additional记录器可以用于记录更详细的信息。
现在我们已经学习了如何在Symfony中注入多个日志记录器。这使我们可以更好地掌控我们的日志文件,并使用不同的记录器来记录不同的信息。