Zend_Log 配置使用示例

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卻是簡單多了。
相關文章
相關標籤/搜索