国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Yii框架官方教程增補(bǔ)版45——專題:日志記錄

黃舟
發(fā)布: 2017-02-16 09:34:00
原創(chuàng)
1703人瀏覽過


yii 提供了一個(gè)靈活可擴(kuò)展的日志功能。記錄的日志 可以通過日志級(jí)別和信息分類進(jìn)行歸類。通過使用 級(jí)別和分類過濾器,所選的信息還可以進(jìn)一步路由到 不同的目的地,例如一個(gè)文件,email,瀏覽器窗口等。

1. 信息記錄

信息可以通過?Yii::log?或?Yii::trace?記錄。其區(qū)別是后者只在當(dāng)應(yīng)用程序運(yùn)行在調(diào)試模式(debug mode)?中時(shí)才會(huì)記錄信息。

Yii::log($message, $level, $category);
Yii::trace($message, $category);
登錄后復(fù)制

當(dāng)記錄信息時(shí),我們需要指定它的分類和級(jí)別 分類是一段格式類似于路徑別名的字符串。 例如,如果一條信息是在?CController?中記錄的,我們可以使用?system.web.CController?作為分類。信息級(jí)別應(yīng)該是下列值中的一種:

  • trace: 這是在?Yii::trace?中使用的級(jí)別。它用于在開發(fā)中 跟蹤程序的執(zhí)行流程。

  • info: 這個(gè)用于記錄普通的信息。

  • profile: 這個(gè)是性能概述(profile)。下面馬上會(huì)有更詳細(xì)的說明。

  • warning: 這個(gè)用于警告(warning)信息。

  • error: 這個(gè)用于致命錯(cuò)誤(fatal error)信息。

2. 信息路由

通過?Yii::log?或?Yii::trace?記錄的信息是保存在內(nèi)存中的。 我們通常需要將它們顯示到瀏覽器窗口中,或者將他們保存到一些 持久存儲(chǔ)例如文件、Email中。這個(gè)就叫作信息路由,例如, 發(fā)送信息到不同的目的地。

在 Yii 中,信息路由是由一個(gè)叫做?CLogRouter?的應(yīng)用組件管理的。 它負(fù)責(zé)管理一系列稱作日志路由的東西。每個(gè)日志路由 代表一個(gè)單獨(dú)的日志目的地。通過一個(gè)日志路由發(fā)送的信息會(huì)被他們的級(jí)別和分類過濾。

要使用信息路由,我們需要安裝并預(yù)加載一個(gè)?CLogRouter?應(yīng)用組件。我們也還需要配置它的?routes?屬性為我們想要的那些日志路由。 下面的代碼演示了一個(gè)所需的?應(yīng)用配置?示例:

array(
    ......
    'preload'=>array('log'),
    'components'=>array(
        ......
        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'trace, info',
                    'categories'=>'system.*',
                ),
                array(
                    'class'=>'CEmailLogRoute',
                    'levels'=>'error, warning',
                    'emails'=>[email protected]',
                ),
            ),
        ),
    ),
)
登錄后復(fù)制

在上面的例子中,我們定義了兩個(gè)日志路由。第一個(gè)是?CFileLogRoute?,它會(huì)把信息保存在位于應(yīng)用程序 runtime 目錄中的一個(gè)文件中。 而且只有級(jí)別為?trace?或?info?、分類以?system.?開頭的信息才會(huì)被保存。 第二個(gè)路由是?CEmailLogRoute?,它會(huì)將信息發(fā)送到指定的 email 地址,且只有級(jí)別為?error?或?warning?的才會(huì)發(fā)送。

在 Yii 中,有下列幾種日志路由可用:

  • CDbLogRoute: 將信息保存到數(shù)據(jù)庫的表中。

  • CEmailLogRoute: 發(fā)送信息到指定的 Email 地址。

  • CFileLogRoute: 保存信息到應(yīng)用程序 runtime 目錄中的一個(gè)文件中。

  • CWebLogRoute: 將 信息顯示在當(dāng)前頁面的底部。

  • CProfileLogRoute: 在頁面的底部顯示概述(profiling)信息。

信息:?信息路由發(fā)生在當(dāng)前請(qǐng)求周期最后的?onEndRequest?事件觸發(fā)時(shí)。 要顯式終止當(dāng)前請(qǐng)求過程,請(qǐng)調(diào)用?CApplication::end()?而不是使用?die()?或?exit(),因?yàn)?CApplication::end()?將會(huì)觸發(fā)onEndRequest?事件, 這樣信息才會(huì)被順利地記錄。

3. 信息過濾

正如我們所提到的,信息可以在他們被發(fā)送到一個(gè)日志路由之前通過它們的級(jí)別和分類過濾。 這是通過設(shè)置對(duì)應(yīng)日志路由的?levels?和?categories?屬性完成的。 多個(gè)級(jí)別或分類應(yīng)使用逗號(hào)連接。

由于信息分類是類似?xxx.yyy.zzz?格式的,我們可以將其視為一個(gè)分類層級(jí)。 具體地,我們說?xxx?是?xxx.yyy的父級(jí),而xxx.yyy?又是?xxx.yyy.zzz?的父級(jí)。 這樣我們就可以使用?xxx.*?表示分類?xxx?及其所有的子級(jí)和孫級(jí)分類。

4. 記錄上下文信息

從版本 1.0.6 起,我們可以設(shè)置記錄附加的上下文信息, 比如 PHP 的預(yù)定義變量(例如?$_GET,?$_SERVER),session ID,用戶名等。 這是通過指定一個(gè)日志路由的?CLogRoute::filter屬性為一個(gè)合適的日志過濾規(guī)則實(shí)現(xiàn)的。

框架使用非常方面的可以用于大多數(shù)日志過濾的CLogFilter,默認(rèn)情況下,?CLogFilter 將會(huì)記錄一條包含變量(如通常包含系統(tǒng)上下文變量值的如$_GET,$_SERVER等)的信息。CLogFilter還可以用于配置到每一個(gè)日志信息之前,帶上session ID,用戶名等。當(dāng)我們要查找日志信息的位置時(shí)這將帶來極大的便利 。

下面的配置展示了如何開啟記錄上下文信息。每一個(gè)日志路由都有自己的日志過濾器,但是默認(rèn)情況下, 日志路由并不包含日志過濾器。

array(
    ......
    'preload'=>array('log'),
    'components'=>array(
        ......
        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'error',
                    'filter'=>'CLogFilter',
                ),
                ...other log routes...
            ),
        ),
    ),
)
登錄后復(fù)制

從版本1.0.7開始,Yii支持記錄通過調(diào)用Yii::trace返回的日志記錄信息中的回調(diào)棧信息。這一特性默認(rèn)是取消的,因?yàn)檫@回降低性能。想要使用這一特性,只需在入口腳本中定義一個(gè)名為YII_TRACE_LEVEL的大于0的常量?(在包含yii.php之前),然后Yii將會(huì)在每一個(gè)trace信息之后加上應(yīng)用代碼回調(diào)棧的文件名和行號(hào)。?YII_TRACE_LEVEL?決定了每一個(gè)回調(diào)棧的層級(jí)將會(huì)被記錄。這個(gè)信息在開發(fā)期間很有用,因?yàn)檫@可以幫助我們確定觸發(fā)trace信息的位置。

5. 性能分析

性能分析是一個(gè)特殊的日志記錄類型。性能分析可以用于衡量指定代碼塊的運(yùn)行時(shí)間,并且找出性能瓶頸。

使用性能分析,我們需要指定被分析的代碼塊。我們通過插入如下代碼來標(biāo)記每一個(gè)代碼塊的開始和結(jié)束:

Yii::beginProfile('blockID');
...code block being profiled...
Yii::endProfile('blockID');
登錄后復(fù)制

其中blockID?指的是代碼塊的唯一標(biāo)志符.

注意, 代碼塊需要被合理嵌套。也就是說,一個(gè)代碼塊不能和另一代碼塊交叉嵌套:要么是并行的,要么是完全封閉包含在另一個(gè)代碼塊里。

為了顯示分析結(jié)果, 需要安裝 一個(gè)包含CProfileLogRoute日志路由的CLogRouter 應(yīng)用組件。這和我們處理其他的信息路由一樣,CProfileLogRoute路由將會(huì)在當(dāng)前頁面的底部顯示性能分析結(jié)果。

profile

6. SQL執(zhí)行分析

性能分析在處理數(shù)據(jù)庫操作時(shí)尤為有用,因?yàn)?SQL 執(zhí)行經(jīng)常是一個(gè)應(yīng)用主要的性能瓶頸。 我們當(dāng)然可以在每一次SQL執(zhí)行的地方插入beginProfile?和?endProfile語句, 從版本1.0.6開始, 但Yii 提供了一個(gè)更加系統(tǒng)的方式來解決這個(gè)問題。

通過在應(yīng)用配置中設(shè)置 CDbConnection::enableProfiling 為true, 每一個(gè)被執(zhí)行的SQL語句都會(huì)被分析. 結(jié)果可以通過設(shè)置前面提到的CProfileLogRoute來顯示, 這樣我們就能知曉每一個(gè)SQL語句的執(zhí)行時(shí)間。除此之外我們還可以調(diào)用CDbConnection::getStats() 來取回SQL語句執(zhí)行的次數(shù)和總的執(zhí)行時(shí)間。

?以上就是Yii框架官方教程增補(bǔ)版45——專題:日志記錄的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(miracleart.cn)!

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問題
開源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)