Zend_Log 配置使用示例

webphp 12年前發布 | 3K 次閱讀 Uliweb Vine Linux

Zend Framework 框架的使用范圍已經越來越廣了啊。不像前幾年網上的中文資料都非常的少。最近也在用Zend Framework 框架做項目。其中使用到了Zend_Log組件,特將配置發下來和大家分享一下。

1、修改 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);

}</pre></p>

它的作用如下:以年月創建目錄,以日期創建日志文件;聲明日志保存到文件;定義日志格式;聲明日志過濾級別;存取$logger對象。$log數組元素讀取了application.ini配置。

2、在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);

}</pre></p>

它的作用是:獲取在_initLog()定義的$logger對象,為對象添加modules/controller/action 元素;為什么這三個元素要在這里定義呢,因為只有執行到這里我們才知道分發到了哪個控制器。我們在日志里記錄這三個元素就是在查看日志時容易定位問題位 置。

3、在繼承自Custom_Controller_RootController類中調用

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

public function indexAction()

{  

   $this->log(4,'資金操作出錯');

}</pre>

4、日志文件信息

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

以上就是配置的全過程,如果不記錄當前的modules/controller/action倒是簡單多了。

 本文由用戶 webphp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!