關於ThinkPHP5.1+的Log無法記錄SQL調試記錄的小經歷

項目開發階段,除了基本編碼外,性能也需要實時關注與優化。之前我的大部分項目都是使用ThinkPHP5.0以及ThinkPHP3.2,對於框架提供的日誌記錄和日誌配置都差不多,然後使用ThinkPHP5.1的時候就吃癟,花了十幾分鍾才好,所以寫一下防止後面忘記了再踩坑。

日誌配置

ThinkPHP5.1沒有了config.php,日誌配置單獨提出來自成一塊,叫Log.php,這個適應一下就可以。

日誌記錄

在5.1以前的項目中記錄個人調試的日誌,都是使用use think\Log; 然後使用Log::write()。然後5.1的時候引入了facede,所以直接用以前的方式,不能使用靜態調用write等方法,修改為use think\facede\Log,然後再使用。

關於ThinkPHP5.1+的Log無法記錄SQL調試記錄的小經歷

實際日誌配置

當需要調試時,app配置中'app_debug' => true, 'app_trace' => true, 調試和追蹤開啟,瀏覽器打開會右下角出現TP的logo和運行時間,點擊圖標會出現調試明細。

關於ThinkPHP5.1+的Log無法記錄SQL調試記錄的小經歷

但是有時不會出現,但是想調試SQL以及SQL的查詢速度,就需要開啟日誌記錄,儘量不要配置保存目錄,默認在runtime下就可以,也不是因為自定義目錄的寫入權限問題,所以一切默認就好,先解決問題後面再研究問題原因,Log.php配置如下。

return [
 // 日誌記錄方式,支持 file socket 或者自定義驅動類
 'type' => 'File',
 'file_size' =>2097152,
	'apart_level' => ['sql','error'],
 //日誌的時間格式,默認是` c `
 'time_format' =>'c'
];
關於ThinkPHP5.1+的Log無法記錄SQL調試記錄的小經歷

當開發階段結束,不需要除了error以外級別的日誌,可以在"apart_level"配置只保留"error"。


關於ThinkPHP5.1+的Log無法記錄SQL調試記錄的小經歷


關於ThinkPHP5.1+的Log無法記錄SQL調試記錄的小經歷


分享到:


相關文章: