gpt4 book ai didi

zend-framework - 如何在 ZF2 的 ServiceManager 中注册 Zend\Log 实例

转载 作者:行者123 更新时间:2023-12-04 08:58:28 24 4
gpt4 key购买 nike

我想知道通过 ZF2 中的 ServiceManager 启动和重用记录器实例的最佳方法是什么。
当然,我可以做一个在任何类中使用的简单方法,例如:

public function getLogger () {
$this->logger = new Logger();
$this->logger->addWriter(new Writer\Stream('/log/cms_errors.log'));
return $logger;
}

但我想知道在 global.php 中注册类似结构的最佳方法是什么。
到目前为止我可以

将以下内容添加到 global.php
'Zend\Log'=>array(
'timestampFormat' => 'Y-m-d',
array(
'writerName' => 'Stream',
'writerParams' => array(
'stream' => '/log/zend.log',
),
'formatterName' => 'Simple',
),
),

如果我尝试通过以下方式调用它:
$this->getServiceLocator()->get('Zend\Log')

我得到一个:
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Zend\Log

最佳答案

将以下数据添加到'global.php'

'service_manager' => array(
'factories' => array(
'Zend\Log' => function ($sm) {
$log = new Zend\Log\Logger();
$writer = new Zend\Log\Writer\Stream('./data/logs/logfile');
$log->addWriter($writer);

return $log;
},
),
),

然后你就可以打电话了
$this->getServiceLocator()->get('Zend\Log')->info('Something...');

关于zend-framework - 如何在 ZF2 的 ServiceManager 中注册 Zend\Log 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11686854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com