搜尋
首頁後端開發php教程PHP開發框架Yii Framework教學(3) 為應用程式新增日誌

在開發應用的過程中,調試也是非常重要的一個環節,除了IDE支援的即時調試(如VS.PHP或IDE支援的調試功能),為Web應用添加適當的調試信息也是非常有用的一個方法,開發過Java或.Net 應用的對log4XX都不陌生,Yii Framework中也提供了類似的Log功能, Yii::log,它是作為CWebApplication一個內建的元件出現的。可以透過設定檔來設定(Yii中設定通常為 protected/config/main.php)。

上篇文章Yii Framework 開發簡明教學(2) Yii Web應用基礎簡述了應用元件。

除Log元件外,Yii 預先定義了一系列核心應用元件,提供常見 Web 應用中所使用的功能。例如, request 元件用於解析使用者請求 並提供例如 URL,cookie 等資訊。 透過配置這些核心元件的屬性,我們可以在幾乎所有的方面修改Yii 的預設行為。

下面我們列出了由 CWebApplication 預先定義的核心元件。

assetManager: CAssetManager - 管理私有資源檔案的發布。

authManager: CAuthManager - 管理角色為基礎的存取控制 (RBAC)。

cache: CCache - 提供資料快取功能。注意, 你必須指定實際的類別(例如CMemCache, CDbCache)。 否則,當你存取此元件時將傳回 NULL。

clientScript: CClientScript - 管理客戶端腳本 (javascripts 和 CSS).

coreMessages: CPhpMessageSource - 提供 Yii 框架用到的 核心資訊的翻譯。

db: CDbConnection - 提供資料庫連線。注意,使用此元件你必須配置其 connectionString 屬性。

errorHandler: CErrorHandler - 處理未捕獲的 PHP 錯誤和異常。

format: CFormatter - 格式化數值顯示。此 功能從版本 1.1.0 起開始提供。

messages: CPhpMessageSource - 提供Yii應用中使用的資訊翻譯。

request: CHttpRequest - 提供關於使用者請求的資訊。

securityManager: CSecurityManager - 提供安全相關的服務,例如雜湊, 加密。

session: CHttpSession - 提供session相關的功能。

statePersister: CStatePersister - 提供全局狀 態持久方法。

urlManager: CUrlManager - 提供 URL 解析和建立相關功能

user: CWebUser - 提供目前使用者的識 別資訊。

themeManager: CThemeManager - 管理主題。這些組件將在後面的教學中逐步介紹。以下給出Log功能使用的基底 本方法:這裡我們修改Yii Framework 開發簡明教學(1) 第一個應用Hello World。為其添加日誌。 1. 建立設定檔protected/config/main.php希望將日誌寫到一個檔案中,可以使用以下設定:

// This is the main Web application configuration. Any writable// CWebApplication properties can be configured here.return array(
// preloading 'log' component'preload'=>array('log'),
// application components'components'=>array(
'log'=>array('class'=>'CLogRouter','routes'=>array(array('class'=>'CFileLogRoute','levels'=>'info,error, warning',),
),),),
);

CLogRouter 資訊路由透過Yii::log 或Yii::trace 所記錄的資訊是保存在記憶體中的。 我們通常需要將它們顯示到 瀏覽器視窗中,或將他們保存到一些 持久性儲存例如文件、Email中。這個就叫作 訊息路由。

一般使用Log功能時,需要預 先載入Log元件,這是透過preload來設定的,preload 允許應用事先載入一些模組.提示: 預設情況下,應用元件是根據需要而 建立的。這意味著一個元件只有在被存取的情況下才會被建立。 因此,系統的整體效能不會因為配置了許多元件而下降。有些應 用元件,(例如CLogRouter) 是不管用不用都要建立的。在這種情況下, 我們在應用程式的設定檔裡將這些元件的ID欄位上: preload。

2. 修改入口腳本index.php ,設定主應用實例使用新建立的設定檔。

$yii='C:/yiiframework/yii.php';
// remove the following line when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
$config=dirname(__FILE__).'/protected/config/main.php';
require_once($yii);
Yii::createWebApplication($config)->run();3. 创建protected/runtime

因為日誌檔案寫入的預設目錄為 protected/runtime 所以事先要建立好runtime 目錄,否則Yii 將日誌直接顯示在網頁上。

4. 這樣就可以使用 Yii::log 或 Yii::trace 為應用程式新增日誌。

其 區別是後者只在當應用程式運行在 調試模式(debug mode) 中時才會記 錄資訊。

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

當記錄資訊時,我 們需要指定它的分類和等級 分類是一段格式類似於 路徑別名 的字串。 例如,如果一則資訊是在 CController 中記錄的, 我們可以使用 system.web.CController 作為分類。資訊等級應該是下列值中的一種:

trace: 這是在 Yii::trace 中使用的 等級。它用於在開發中 追蹤程式的執行流程。

info: 這個用來記錄普通的資訊。

profile: 這個是效能概述(profile) 。下面馬上會有更詳細的說明。

warning: 這個用於警告(warning)訊息。

error: 這個用於致命錯誤(fatal error)信 息。

Yii 的日誌透過Level和Category進行分類和過濾,正如我們所提到的, 多個等級或分類應使用逗號連接。

由于 信息分类是类似 xxx.yyy.zzz 格式的,我们可以将其视为一个分类层级。 具体地,我们说 xxx 是 xxx.yyy 的父级,而 xxx.yyy 又是 xxx.yyy.zzz 的父级。 这样我们就可以使用 xxx.* 表示分类 xxx 及其所有的子级和孙级分类。

有了以 上知识,我们修改SiteController的actionIndex,添加一行日志。

public function actionIndex()
{
Yii::log("action","info","site.action");
$this->render("index");
}

5. 运行应用,可以看到Yii在protected/runtime 创建了一个application.log

其内容如下:

2012/12/11 21:23:38 [info] [site.action] action

注: 日志存放的位置和文件名都可以通过配置来修改,一般情 况使用缺省值就可以了,和log4X 类似,应用的日志可以通过路由同时写到多个目的地(文件,Email等)这些多可以通过配置 来实现,具体可以参见日志记录。

以上就是PHP开发框架Yii Framework教程(3) 为应用添加日志的内容,更多相关内容请关注PHP中文网(www.php.cn)!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP和Python:解釋了不同的範例PHP和Python:解釋了不同的範例Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP和Python:深入了解他們的歷史PHP和Python:深入了解他們的歷史Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

在PHP和Python之間進行選擇:指南在PHP和Python之間進行選擇:指南Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和框架:現代化語言PHP和框架:現代化語言Apr 18, 2025 am 12:14 AM

PHP在現代化進程中仍然重要,因為它支持大量網站和應用,並通過框架適應開發需求。 1.PHP7提升了性能並引入了新功能。 2.現代框架如Laravel、Symfony和CodeIgniter簡化開發,提高代碼質量。 3.性能優化和最佳實踐進一步提升應用效率。

PHP的影響:網絡開發及以後PHP的影響:網絡開發及以後Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型?PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型?Apr 17, 2025 am 12:25 AM

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP如何處理對象克隆(克隆關鍵字)和__clone魔法方法?PHP如何處理對象克隆(克隆關鍵字)和__clone魔法方法?Apr 17, 2025 am 12:24 AM

PHP中使用clone關鍵字創建對象副本,並通過\_\_clone魔法方法定制克隆行為。 1.使用clone關鍵字進行淺拷貝,克隆對象的屬性但不克隆對象屬性內的對象。 2.通過\_\_clone方法可以深拷貝嵌套對象,避免淺拷貝問題。 3.注意避免克隆中的循環引用和性能問題,優化克隆操作以提高效率。

PHP與Python:用例和應用程序PHP與Python:用例和應用程序Apr 17, 2025 am 12:23 AM

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版