php 查看init,php 中init log

1、修改 Bootstrap.php,在其中加入_initLog()函数。

protectedfunction_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=newZend_Log_Writer_Stream($logFile);$format='%timestamp% %priorityName% (%priority%): %message%

[%modules%]-[%controller%]-[%action%] '.PHP_EOL;$formatter=newZend_Log_Formatter_Simple($format);$writer->setFormatter($formatter);$logger=newZend_Log($writer);$logger->addFilter((int)$log['priority']);Zend_Registry::set('log',$logger);}

它的作用如下:以年月创建目录,以日期创建日志文件;声明日志保存到文件;定义日志格式;声明日志过滤级别;存取$logger对象。$log数组元素读取了application.ini配置。

2、在Controller中设置当前的action信息

我们的Controller的关系是 abstract class Custom_Controller_RootController extends Zend_Controller_Action。在Custom_Controller_RootController中定义了log()方法:

publicfunctionlog($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元素;为什么这三个元素要在这里定义呢,因为只有执行到这里我们才知道分发到了哪个控制器。我们在日志里记录这三个元素就是在查看日志时容易定位问题位置。

3、在继承自Custom_Controller_RootController类中调用

class UserController extends Custom_Controller_DefaultController中定义了indexAction()方法:

publicfunctionindexAction(){$this->log(4,'资金操作出错');}

4、日志文件信息

2011-04-07T10:11:28+08:00 WARN (4): 资金操作出错 [default]-[user]-[index]

以上就是配置的全过程,如果不记录当前的modules/controller/action倒是简单多了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值