ThinkPHP 內置強大的調試工具與靈活的日誌系統,合理配置能大幅提升開發效率與問題排查速度。本文匯總配置項含義、調試面板自定義、SQL 執行監控、運行性能統計及日誌級別控制等實戰技巧。
<?php
return array(
// URL 模式
'URL_MODEL' => 1, // PATHINFO 模式
'URL_PATHINFO_DEPR' => '-', // 參數分隔符
// 模板定界符(避免與前端框架衝突)
'TMPL_L_DELIM' => '<!--{',
'TMPL_R_DELIM' => '}-->',
// ***** 調試模式 *****
'APP_DEBUG' => true, // 開啟調試:大小寫敏感、詳細錯誤頁、禁用字段緩存
// 關閉調試但保留性能統計
// 'APP_DEBUG' => false,
// 'SHOW_RUN_TIME' => true, // 頁面執行時間
// 'SHOW_ADV_TIME' => true, // 詳細運行時間
// 'SHOW_DB_TIMES' => true, // 數據庫查詢次數
// 'SHOW_CACHE_TIMES' => true, // 緩存操作次數
// 'SHOW_USE_MEM' => true, // 內存開銷
// 自定義 Trace 頁面
// 'TMPL_TRACE_FILE' => APP_PATH . '/Public/trace.php',
// ***** 日誌配置 *****
'LOG_RECORD' => true, // 開啟日誌
'LOG_RECORD_LEVEL' => array('EMERG', 'ALERT', 'CRIT', 'ERR'), // 記錄級別
);
?>
<?php
// 1. 獲取最後執行的 SQL
$User = new Model('User');
$User->find(1);
echo $User->getLastSql(); // 輸出完整 SQL 語句
// 2. 手寫日誌
Log::write('用戶登入', Log::INFO); // 記錄信息
Log::record('慢查詢 SQL: ' . $sql, Log::WARN); // 記錄並輸出到日誌文件
// 3. 自定義日誌文件
// Log::write('message', $level, $type, 'custom.log');
?>
| 常量 | 值 | 適用場景 |
|---|---|---|
| EMERG | 0 | 系統不可用 |
| ALERT | 1 | 必須立即處理 |
| CRIT | 2 | 嚴重錯誤 |
| ERR | 3 | 運行時錯誤 |
| WARN | 4 | 警告信息 |
| NOTICE | 5 | 重要提示 |
| INFO | 6 | 一般信息 |
| DEBUG | 7 | 調試詳情 |
APP_DEBUG = true,日誌記錄 DEBUG 級別APP_DEBUG = false,開啟 SHOW_* 統計,日誌 WARN 以上ERR 以上,配合日誌切割工具(logrotate)Runtime/Data/ 下緩存文件善用調試面板與分級日誌,讓 Bug 無處遁形,性能瓶頸一目了然。