Zend 3 - 使用记录器作为服务

Zend 3 - using logger as service

我是 ZF3 的新手,我不知道应该如何将记录器模块定义为服务以及如何在其他模块中使用(重用)它。官方documentation从这点上看就差了。任何简短的例子都会很好。

如果你想在 ZF 应用程序中使用 zend-log,安装后你需要做两件事:

  1. 在 'modules' 键下的应用程序配置中注册 Zend\Log

  2. 在 global.php 或模块配置中为您的记录器添加配置

    'log' => [
      'MyLogger' => [
        'writers' => [
            'stream' => [
                'name' => 'stream',
                'priority' => \Zend\Log\Logger::ALERT,
                'options' => [
                    'stream' => '/tmp/php_errors.log',
                    'formatter' => [
                        'name' => \Zend\Log\Formatter\Simple::class,
                        'options' => [
                            'format' => '%timestamp% %priorityName% (%priority%): %message% %extra%',
                            'dateTimeFormat' => 'c',
                        ],
                    ],
                    'filters' => [
                        'priority' => [
                            'name' => 'priority',
                            'options' => [
                                'operator' => '<=',
                                'priority' => \Zend\Log\Logger::INFO,
                            ],
                        ],
                    ],
                ],
            ],
        ],
      ],
    ],
    

之后只需从服务管理器中获取并使用它:

$logger = $container->get('MyLogger'); // <-- the key that you register in config above
$logger->info('Logging info message in the file');

您可能想要从 SM 获取记录器,而不是将其注入到您想要使用的 class 中。

有大神博客post关于Logging with zend-log