国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

詳解PHP的Yii框架中日志的相關配置及使用

2020-03-22 20:06:59
字體:
來源:轉載
供稿:網友
默認的日志是輸出到protected/runtime/application.log如果需要修改那么需要在main.php里面的 components 下面增加log配置,如下:'preload' = array('log'),//這句也必須加上'components' = array( 'log'= array( 'html' target='_blank'>class'= 'CLogRouter', 'routes'= array( //這是一個文件route表示category為test開頭的所有類型的輸出都會記錄到runtime/test.log下面 array( 'class'= 'CFileLogRoute', 'levels'= 'trace, info, debug, warn, error, fatal, profile', 'categories'= 'test.*', 'maxFileSize'= 1048576,//單文件最大1G 'logFile'= 'test.log', // 開發過程中所有日志直接輸出到瀏覽器了,這樣不需要登錄服務器看日志了
如果在某處調用了Yii::log("jdkshgds","info",'test.xx');這個log首先被記錄在了內存中一個CLogger類的array中,然后會逐一的判斷每個LogRoute,判斷是否需要輸出,注意是逐一判斷,不是其中一個輸出下一個就不管了。拿上面的配置來說:第一個CFileLogRoute,'categories'= 'test.*',levels里包含了info, test.xx滿足條件,所以會執行,將這條log輸出到test.log中,然后下一個CWebLogRoute, 'levels' = CLogger::LEVEL_PROFILE,。而這條log是info的,所以不會執行,再下一個CWebLogRoute,'categories' = 'test.* ',levels沒指定,那就說不過濾,所以這個也會被執行,所以這條log將被輸出到瀏覽器中。二、profile功能
另外logger還有一個很強大的功能:profile,Yii::beginProfile('blockID');...code block being profiled...Yii::endProfile('blockID');這樣就能測試這個code block的執行效率了,非常的方便啊。更詳細的配置查看:http://www.yiiframework.com/doc/api/1.1/CProfileLogRoute然后還有一個很BUG的功能,Profiling SQL Executions很多時候sql語句寫的不好會非常影響效率的,但是要確定哪一條語句影響了效率就需要profiling了。YII也提供了這個bug級別的功能。三、Yii::log()和Yii::trace()的使用
首先在config文件中設置log'log'= array( 'class'= 'CLogRouter', 'routes'= array( array( 'class'= 'CFileLogRoute',//這表示把日志輸出到文件中,下方有詳細的 'levels'= 'error, warning', array( 'class'= 'CWebLogRoute',//這表示把日志顯示在網頁下方,下方有詳細的 'levels'= 'trace, info, error, warning', 'categories'= 'cool.*,system.db.*',
日志路由class: CDbLogRoute: 將信息保存到數據庫的表中。 CEmailLogRoute: 發送信息到指定的 Email 地址。 CFileLogRoute: 保存信息到應用程序 runtime 目錄中的一個文件中。 CWebLogRoute: 將 信息 顯示在當前頁面的底部。 CProfileLogRoute: 在頁面的底部顯示概述(profiling)信息。信息級別levels: trace: 這是在 Yii::trace 中使用的級別。它用于在開發中 跟蹤程序的執行流程。 info: 這個用于記錄普通的信息。 profile: 這個是性能概述(profile)。下面馬上會有更詳細的說明。 warning: 這個用于警告(warning)信息。 error: 這個用于致命錯誤(fatal error)信息。分類categories:可以自定義,但在輸出函數里要對應才會被寫入日志里
(例如上邊寫的是 cool.* 和 system.db.* ,就會把相應分類的信息寫入日志,請結合下文來理解)設置完了,就可以用寫入日志的函數來記錄了:Yii::trace('My log message.','cool.pd');//cool.pd屬于cool.*分類,所以會被寫入日志Yii::log('My log message.','info','cool.collectpd');//log定義級別為info,結合上文,第一個logclass會忽略,不會被寫入文件,但會被第二個logclass接收,寫入日志在網絡下方顯示。
trace()和log()的區別:
trace()只會在調試模式下生效,即開啟debug的時候
trace()不分level,但log()能設置levels參數
四、調試sql query每個語句執行的耗時
在配置中的log下加上下面這個Route//這個配置專門負責數據庫操作的profile array( 'class'= 'CProfileLogRoute', 'levels' = CLogger::LEVEL_PROFILE, 'showInFireBug' = true, 'ignoreAjaxInFireBug' = true, 'categories' = 'system.db.* ', //只記錄db的操作日志,其他的忽略 然后在某個controller的某個action中加入:Yii::beginProfile('db', 'pocketpet'); for($i=0;$i 1000;$i++){ $user = UserModel::model()- findByPk("1");//這里只要是數據庫操作就行,這個只是個例子 Yii::endProfile('db', 'pocketpet');在瀏覽器中訪問這個action,記得先打開firebug,然后firebug中就能看到如下圖的記錄:
相同的query會進行歸類,計算total和average,這個對于分析還是非常有幫助的。也可以將db的日志寫到文件,配置如下(不建議使用,還是到瀏覽器用firebug方便):array( 'class'= 'CFileLogRoute', 'levels' = CLogger::LEVEL_PROFILE, 'categories' = 'system.db.* ', //只記錄db的操作日志,其他的忽略 'logFile'= 'db.log', 當然,想要生效還得有下面兩步配置:1 . 記得在index.php, 中加入以下配置$yii = dirname(__FILE__).'/../yii/framework/yii.php';$config = dirname(__FILE__).'/protected/config/main.php';defined('YII_DEBUG') or define('YII_DEBUG',true);defined('YII_DEBUG_SHOW_PROFILER') or define('YII_DEBUG_SHOW_PROFILER',true);//enable profilingdefined('YII_DEBUG_PROFILING') or define('YII_DEBUG_PROFILING',true);//trace leveldefined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);//execution timedefined('YII_DEBUG_DISPLAY_TIME') or define('YII_DEBUG_DISPLAY_TIME',false);require_once($yii);Yii::createWebApplication($config)- run();2. 在main.php主配置文件里面,的components db 里將enableProfiling設置為true'components' = array('db' = array( 'enableProfiling' = true, //這個是用來記錄日志的,會記錄每一條語句執行的時間 'enableParamLogging' = true,//true表示包括sql語句的參數在內的信息都會記錄到日志里,非常詳細PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 库伦旗| 方山县| 监利县| 高碑店市| 丹阳市| 天气| 喜德县| 临泉县| 柏乡县| 阿巴嘎旗| 陆良县| 禄丰县| 固安县| 偏关县| 勃利县| 南汇区| 博客| 新营市| 志丹县| 江安县| 平和县| 繁昌县| 迁西县| 綦江县| 阿坝县| 长顺县| 交城县| 成都市| 灵寿县| 扬州市| 仙游县| 崇仁县| 城固县| 龙南县| 宜城市| 涟水县| 安陆市| 田东县| 澄迈县| 谢通门县| 太和县|