ThinkPHP 6.0.16中开启接口调试日志需配置独立api日志通道、在控制器或中间件中结构化记录请求响应及耗时,并通过.env开关和APP_DEBUG控制启停。

ThinkPHP 6.0.16 中开启接口调试日志,核心是配置日志驱动、指定日志级别、隔离接口日志路径,并结合中间件或行为钩子做精准记录。默认日志已开启,但需针对性调整才能满足接口开发调试需求。
启用并隔离接口专用日志通道
在 config/log.php 中新增一个独立日志通道,避免与系统日志混杂:
- 定义新通道如
'api',使用File驱动,设置path指向runtime/log/api/ - 指定
level为['debug', 'info', 'error'],确保调试信息不被过滤 - 关闭该通道的
realtime_write(默认 false 即可),避免高并发写入阻塞;若需实时查看,可设为 true 并配合max_files控制轮转
在接口逻辑中主动写入结构化调试日志
推荐在控制器方法或服务层关键节点调用 Log::channel('api')->debug(),内容建议包含上下文信息:
- 请求参数:
input()或request()->param()(注意脱敏敏感字段) - 响应数据:返回前记录
$result或异常堆栈(getTraceAsString()) - 耗时标记:用
microtime(true)计算处理时间,例如"cost: " . round(($end - $start) * 1000, 2) . "ms"
通过中间件统一记录请求与响应快照
创建 app/middleware/ApiLogMiddleware.php,在 handle() 中实现:
立即学习“PHP免费学习笔记(深入)”;
- 前置记录:URL、method、header(过滤 Authorization)、IP、原始输入(
$request->getContent()) - 后置记录:HTTP 状态码、响应体长度、是否 JSON、执行耗时
- 仅对
api/路由前缀生效(通过$request->is('api/*')判断) - 错误时自动降级记录
error级别日志,含异常消息和文件行号
日志查看与临时开关控制
调试阶段可动态启停日志,避免影响性能:
- 在
.env中添加API_LOG_ENABLE=true,代码中读取Env::get('api_log_enable', false)控制中间件是否生效 - 使用
tail -f runtime/log/api/*.log实时追踪,配合grep过滤特定接口路径或 trace_id - 上线前确保
APP_DEBUG=false,此时即使中间件存在,默认日志级别也会屏蔽 debug 日志,无需注释代码



















