開發除錯、上線監控、安全審計皆仰賴日誌。Yi i 內建 CLogRouter,支援檔案、郵件、資料庫、FirePHP 等多種路由,用法類似 log4j/log4net。
除 log 外,Yii 預定義 18 個核心組件(如 db、cache、request、user、errorHandler 等),均可透過 components 配置客製化。
<?php
// protected/config/main.php
return array(
'preload' => array('log'), // 預載入 log 組件
'components' => array(
'log' => array(
'class' => 'CLogRouter',
'routes' => array(
array(
'class' => 'CFileLogRoute',
'levels' => 'info, error, warning',
'categories' => 'system.*', // 可選:過濾類別
'logPath' => '', // 預設 protected/runtime
'logFile' => 'application.log',
'maxFileSize' => 1024, // KB
'maxLogFiles' => 5,
),
),
),
),
);
<?php
$yii = 'C:/yiiframework/yii.php';
defined('YII_DEBUG') or define('YII_DEBUG', true);
$config = dirname(__FILE__) . '/protected/config/main.php';
require_once($yii);
Yii::createWebApplication($config)->run();
mkdir protected/runtime chmod 777 protected/runtime # Linux/Unix 確保可寫
若目錄不存在或不可寫,Yii 會直接將日誌輸出到網頁。
| 方法 | 用途 | 說明 |
|---|---|---|
Yii::log($msg, $level, $category) | 一般記錄 | 手動記錄業務邏輯、除錯資訊 |
Yii::trace($msg, $category) | 追蹤記錄 | 僅在 YII_DEBUG=true 時記錄,適合開發階段流程追蹤 |
<?php
// 控制器中
public function actionLogin() {
Yii::trace('開始登入流程', 'auth');
if ($model->validate()) {
Yii::log('用戶登入成功: ' . $model->username, 'info', 'auth.login');
// ...
} else {
Yii::log('登入驗證失敗', 'warning', 'auth.login');
}
}
YII_DEBUG,僅記錄 error, warningcategory(如 auth、db、api.payment)便於過濾info 層級