在開發應用的過程中,調試也是非常重要的一個環節,除了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希望將日志寫到一個文件中,可以使用如下配置:
<?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);