在開發應用的過程中,調試也是非常重要的一個環節,除了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)!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

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

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版