ThinkPHP5.1无法记录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,然后再使用。

2dce0926980fa4731171506c098ecc35_0c93d81064e3625919ed36d37b681731bb1.jpg

实际日志配置

当需要调试时,app配置中'app_debug' => true, 'app_trace' => true, 调试和追踪开启,浏览器打开会右下角出现TP的logo和运行时间,点击图标会出现调试明细。

7f7a2afdd8944add39d9f9e45373a517_9fe55196eaeb0da8e43e1327c19f2475379.jpg

但是有时不会出现,但是想调试SQL以及SQL的查询速度,就需要开启日志记录,尽量不要配置保存目录,默认在runtime下就可以,也不是因为自定义目录的写入权限问题,所以一切默认就好,先解决问题后面再研究问题原因,Log.php配置如下。

return [
    // 日志记录方式,支持 file socket 或者自定义驱动类
    'type' => 'File',
    'file_size'     =>2097152,
    'apart_level' => ['sql','error'],
    //日志的时间格式,默认是` c `
    'time_format'   =>'c'
];
aafb554eabdf7de203bc3776cd0f4cff_a1b052bcad63827f26cea82c8f13561b295.jpg

当开发阶段结束,不需要除了error以外级别的日志,可以在"apart_level"配置只保留"error"。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容