有没有更好的方法来拥有一个全局可访问的Zend_Log对象?
在Bootstrap.php我正在做:
protected function _initLogging() { $logger = new Zend_Log(); $writer = new Zend_Log_Writer_Stream(APPLICATION_PATH . '/../app.log'); $logger->addWriter($writer); Zend_Registry::set('log', $logger); }
然后在整个应用程序中我将使用:
Zend_Registry::get('log')->debug('hello world');
我想这并不可怕.它看起来有点冗长.
引用此新闻组条目:
class My_Helper_Logger extends Zend_Controller_Action_Helper_Abstract { function init() { $this->getActionController()->logger = $this->getActionController() ->getInvokeArg('bootstrap') ->getResource('logger'); } }
要应用帮助器,你所要做的就是把这个行放在Michael的例子的init()函数中:
Zend_Controller_Action_HelperBroker::addHelper(new My_Helper_Logger());
现在,您可以在控制器的每个操作中以$ this-> logger的形式访问记录器
还有许多其他建议,请查看链接.