如何在的ServiceManager在ZF2注册一个Zend \ Log实例
来源:互联网 发布:比较好用的浴帽知乎 编辑:程序博客网 时间:2024/06/09 20:59
我在我的引导创建一个默认的数据库编写器对象,并在的ServiceManager注册它.
public function onBootstrap(MvcEvent $e)
{
...
$serviceManager = $e->getApplication()->getServiceManager();
$dbAdapter = $serviceManager->get('Zend\Db\Adapter\Adapter');
$writer = new \Zend\Log\Writer\Db($dbAdapter, 'log_database_table');
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
// this is optional but nice to have
\Zend\Log\Logger::registerErrorHandler($logger);
$serviceManager->setService('Zend\Log', $logger);
}
在一个AbstractController是“ServiceLocatorAwareInterface”的一个实例.这样我就可以在我的控制器只需要调用
public function indexAction()
{
...
$this->getServiceLocator()->get('Zend\Log')->info('this is a test log message');
...
}
或者,更优雅,你可以设置一个日志侦听器,并保持你的记录从您的应用程序分离.该
EventManager
是一个非常强大的组件和ZF2基本上是一个事件驱动的框架了.
在你的
module.php
你可以添加这样的:
// Setup the Zend Logger, pseudocode
$logger = new Logger;
$writer = new Writer;
$logger->addWriter($writer);
// Attach a logging listener for the log event on application level, working code
$events = StaticEventManager::getInstance();
$events->attach('*', 'log', function($event) use ($logger) {
$target = get_class($event->getTarget());
$message = $event->getParam('message', 'No message provided');
$priority = (int) $event->getParam('priority', Logger::INFO);
$message = sprintf('%s: %s', $target, $message);
$logger->log($priority, $message);
});
然后,从任何地方,例如从一个控制器,你可以这样做:
$this->getEventManager()->trigger('log', $this, array(
'priority' => 7,
'message' => 'some log message'
));
- 如何在的ServiceManager在ZF2注册一个Zend \ Log实例
- zf2分析:Zend\ServiceManager
- ZF2重大变更:在MVC中去除Bootstrap,引入ServiceManager
- 在ZF2中实现Zend Framework的Controller init/preDispatch/postDispatch方法
- 在ZF2中实现Zend Framework的Controller init/preDispatch/postDispatch方法
- 在ZF2中实现Zend Framework的Controller init/preDispatch/postDispatch方法
- 在Zf2中实现Controller按照URL自动注册
- Zend\Mail进阶:在ZF2的邮件中使用模板、多个附件以及用DI整合
- 【ZF2】Zend Framework 2 Helloword 入门实例
- 在ServiceManager中加入自定义的服务
- Zend Framework2(zf2) 在不同模块中调用全局配置方法
- ServiceManager守护进程的注册
- zendframework2 如何在自定义类里使用ServiceManager
- 在Yaf中使用Zf2的配置和服务管理器
- 如何在Opencore的log打印方式
- Android ServiceManager 如何注册和查找service
- Android如何注册服务到ServiceManager?
- 在eclipse中使用ServiceManager
- PDB文件:每个开发人员都必须知道的
- linux下安装mysql
- 如何修改shell的提示符,能够出现登录用户名、主机名和路径(AIX)
- 连续打开N个Activity,返回到第一个Activity
- iOS键盘总结
- 如何在的ServiceManager在ZF2注册一个Zend \ Log实例
- springside4-master访问/task报500错误
- freemarker 将String 按照指定字符分割并生成 list 循环
- 一点心得体会
- hdu 1202 The calculation of GPA
- 【bnu 4353 删格游戏】(博弈)
- poj 1160 Post Office(DP)
- linux中断--中断原理分析
- 小黑小波比.Ubuntu下hoststool安装与使用为上谷歌安卓官网