Zend Framework 框架的使用范围已经愈来愈广了啊。不像前几年网上的中文资料都很是的少。最近也在用Zend Framework 框架作项目。其中使用到了Zend_Log组件,特将配置发下来和你们分享一下。php
一、修改 Bootstrap.php,在其中加入_initLog()函数。数组
protected function _initLog() { $log = $this->getOption('log'); $curLogDir = $log['dir'] . date('Ym'); $logFile = $log['dir'] . date('Ym'). '/'. date('d') .'.txt'; if( !is_dir( $curLogDir ) ){ try { mkdir( $curLogDir , 0700); } catch (Exception $e) { echo nl2br($e->__toString()); } } $writer = new Zend_Log_Writer_Stream( $logFile ); $format = '%timestamp% %priorityName% (%priority%): %message% [%modules%]-[%controller%]-[%action%] '. PHP_EOL; $formatter = new Zend_Log_Formatter_Simple($format); $writer->setFormatter($formatter); $logger = new Zend_Log($writer); $logger->addFilter((int)$log['priority']); Zend_Registry::set('log',$logger); }
它的做用以下:以年月建立目录,以日期建立日志文件;声明日志保存到文件;定义日志格式;声明日志过滤级别;存取$logger对象。$log数组元素读取了application.ini配置。app
二、在Controller中设置当前的action信息框架
咱们的Controller的关系是 abstract class Custom_Controller_RootController extends Zend_Controller_Action。在Custom_Controller_RootController中定义了log()方法:函数
public function log($priority,$message) { $log = Zend_Registry::get('log'); $log->setEventItem('modules', $this->_request->getModuleName() ); $log->setEventItem('controller', $this->_request->getControllerName() ); $log->setEventItem('action', $this->_request->getActionName() ); $log->log($message, $priority); }
它的做用是:获取在_initLog()定义的$logger对象,为对象添加modules/controller/action 元素;为何这三个元素要在这里定义呢,由于只有执行到这里咱们才知道分发到了哪一个控制器。咱们在日志里记录这三个元素就是在查看日志时容易定位问题位 置。this
三、在继承自Custom_Controller_RootController类中调用spa
class UserController extends Custom_Controller_DefaultController中定义了indexAction()方法:日志
public function indexAction() { $this->log(4,'资金操做出错'); }
四、日志文件信息code
2011-04-07T10:11:28+08:00 WARN (4): 资金操做出错 [default]-[user]-[index] orm
以上就是配置的全过程,若是不记录当前的modules/controller/action却是简单多了。