Yii 日誌組件

詳細的介紹查看官網的document:http://www.yiiframework.com/doc/guide/1.1/en/topics.loggingphp

也能夠看 Yii 1.1 Application Development Cookbook     這本書很好web

默認的日誌是輸出到protected/runtime/application.log 瀏覽器

若是須要修改那麼須要在main.php裏面增長log配置,以下:服務器

'components' => array( 
        'log'=>array( 
            'class'=>'CLogRouter', 
            'routes'=>array(           app

                 array( 
                     'class'=>'CFileLogRoute', 
                     'levels'=>'trace, info, debug, warn, error, fatal, profile', 
                     'categories'=>'test.*', 
                     'maxFileSize'=>1048576,
                     'logFile'=>'test.log', 
                 ), 
                  // 
  
               //                開發過程當中全部日誌直接輸出到瀏覽器了,這樣不須要登陸服務器看日誌了    yii

                     
                 array( 
                    'class' => 'CWebLogRoute', 
                    'categories' => 'test.*', 
                    'levels' => CLogger::LEVEL_PROFILE, 
                    'showInFireBug' => true, 
                    'ignoreAjaxInFireBug' => true, 
                ), 
                array( 
                    'class' => 'CWebLogRoute', 
                    'categories' => 'test.* ', 
                ), 

                array( 
                    'class'=>'CEmailLogRoute', 
                    'levels'=>'error, warning', 
                    'emails'=>'admin@example.com', 
                ), 
            ), 
        ), 
  
    ),webapp

若是在某處調用了Yii::log("jdkshgds","info",'test.xx');ide

這個log首先被記錄在了內存中一個CLogger類的array中,而後會逐一的判斷每一個LogRoute,判斷是否須要輸出,注意是逐一判斷,不是其中一個輸出下一個就無論了。函數

拿上面的配置來講:性能

第一個CFileLogRoute,'categories'=>'test.*',levels裏包含了info, test.xx知足條件,因此會執行,將這條log輸出到test.log中。

 

YII中日誌的基本使用:

 

能夠經過YII提供的Yii::log和Yii::trace進行日誌信息的輸出

函數定義

 

[php]  view plain copy
 
  1. public static function trace($msg,$category='application')  
  2.      {  
  3.          if(YII_DEBUG)  
  4.              self::log($msg,CLogger::LEVEL_TRACE,$category);  
  5.      }  
  6.      public static function log($msg,$level=CLogger::LEVEL_INFO,$category='application')  
  7.      {  
  8.          if(self::$_logger===null)  
  9.              self::$_logger=new CLogger;  
  10.          if(YII_DEBUG && YII_TRACE_LEVEL>0 && $level!==CLogger::LEVEL_PROFILE)  
  11.          {  
  12.              $traces=debug_backtrace();  
  13.              $count=0;  
  14.              foreach($traces as $trace)  
  15.              {  
  16.                  if(isset($trace['file'],$trace['line']) && strpos($trace['file'],YII_PATH)!==0)  
  17.                  {  
  18.                      $msg.="\nin ".$trace['file'].' ('.$trace['line'].')';  
  19.                      if(++$count>=YII_TRACE_LEVEL)  
  20.                          break;  
  21.                  }  
  22.              }  
  23.          }  
  24.          self::$_logger->log($msg,$level,$category);  
  25.      }  

 

 日誌信息的級別:

[php]  view plain copy
 
  1. const LEVEL_TRACE='trace';用於調試環境,追蹤程序執行流程  
  2. const LEVEL_WARNING='warning';警告信息  
  3. const LEVEL_ERROR='error';致命錯誤信息  
  4. const LEVEL_INFO='info';普通提示信息  
  5. const LEVEL_PROFILE='profile';性能調試信息  


使用方法:

Yii::log($message, $level, $category); 
Yii::trace($message, $category); 


示例: 
需先在main.php中進行配置,例子選擇將日誌存儲在文件(系統默認爲webapp\protected\runtime\application.log)中,爲只存儲trace和error級別,過濾以orange開始的log。 

Java代碼   收藏代碼
  1. 'components'=>array(  
  2.      ...............  
  3.      'log'=>array(  
  4.                'class'=>'CLogRouter',  
  5.                'routes'=>array(  
  6.                     array(  
  7.                          'class'=>'CFileLogRoute',  
  8.                          'levels'=>'trace,error',  
  9.                          'categories'=>'orange.*'  
  10.                     ),  
  11.                ),  
  12.           ),  
  13.      ...............  
  14. )  


  
在控制器中定義方法並執行,在此爲OrangeController控制器 

 
  1. public function actionTest(){  
  2.        Yii::log('This is a  trace log','trace','orange.test');  
  3.    }  


執行之後可在日誌文件中看到咱們的trace信息,爲 

 
    1. 2012/09/28 15:40:11 [trace] [orange.test] This is a  trace log  
    2. in D:\PHP\www\yii\orange\protected\controllers\OrangeController.php (24)  
相關文章
相關標籤/搜索