如何利用ThinkPHP日志系统记录SQL执行语句【调试】
在ThinkPHP中开启调试模式并设置数据库配置`log_sql`为true,同时在日志配置中将`sql`加入允许级别,即可自动记录每次SQL执行语句至日志文件,便于排查慢查询和调试条件拼接。确保日志目录具备写权限。
ThinkPHP调试利器:让SQL日志帮你揪出慢查询
日常开发中,数据库查询总是最容易被忽视但又最容易出问题的环节。ThinkPHP框架自带的日志系统其实是个好帮手,只要稍作配置,就能把每次执行的SQL语句原原本本地记录下来,这对排查慢查询、调试条件拼接特别有帮助。不过,默认情况下这块功能是藏起来的,需要手动去“激活”它。

开启 SQL 日志记录
启动日志记录的第一步,是找到应用配置文件(通常在 app/config.php 或 config/database.php)。这里有几个关键开关需要确认:
- 先把 debug 状态设为 true——这个全局调试开关是整个功能的基础。
- 然后在数据库配置里加上 'log_sql' => true,部分旧版本还需要配合 'trace' => true 才能生效。
- 日志驱动保持默认的 File 模式就行,不需要额外设置。
这些步骤做完,算是打下了基础,但日志系统还需要知道“要记录哪些类型”的信息。
配置日志级别与目标
SQL 日志属于单独的 sql 类型,需要在 config/log.php 里明确告诉日志系统:允许输出这个级别。配置时主要看这几个点:
- 'level' => ['sql', 'error', 'info'] —— 必须显式把 sql 写进去,否则即使开启了也记不下来。
- 确认 'type' => 'file',同时检查 'path' 目录(比如 runtime/log/)是否具备写权限。
- 想单独管理 SQL 日志?可以加上 'single' => true,这样会自动生成独立的 sql.log 文件,方便直接查阅。
验证 SQL 是否被记录
配置完了怎么确认能跑起来?简单,执行一条数据库操作试试,比如 UserModel::find(1)。操作完成后,去 runtime/log/ 目录下翻翻:
- 如果启用了 single 模式,直接打开 sql.log,应该能看到类似 [ SQL ] SELECT * FROM `user` WHERE `id` = 1 [ RunTime:0.0012s ] 这样的记录。
- 没单独分离的话,就在 xxxx.log 文件里搜索 "[ SQL ]" 关键词。
- 有一点要记住:只有在 debug=true 并且确实执行了查询时才会记录,空查询或者缓存命中的情况是不会被写入的。
进阶:自定义 SQL 日志格式或输出到控制台
如果觉得日志文件不够直观,想直接在开发环境的浏览器 Console 里查看,那就可以更进一步定制了。有几个方向可以尝试:
- 在 app/common.php 或者中间件里监听 Db::event('sql_explain') 事件,或者用 think\db\Connection 的 setLog() 方法注入自定义回调。
- 手动记录也行:通过 think\facade\Log::write('sql', $sql) 把加工后的 SQL 写入日志。
- 如果想搭配浏览器调试工具,可以用 console.log 输出到前端——前提是配合 Ajax 接口或者调试面板使用。
说起来其实不难,但有个细节容易被忽略:runtime/log 目录的写权限必须保证,否则配置再正确日志也无法生成。一旦开启,每次查询都会留下痕迹,这对分析慢 SQL、检视条件是否拼接正确来说,简直是肉眼可见的利器。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















