ThinkPHP6多应用日志需按应用(admin/api/index)分离:各子应用独立配置log.php指定专属路径,禁用全局log配置,手动创建嵌套日志目录,可动态注入应用名生成文件名。

ThinkPHP6 多应用模式下,日志默认统一写入 runtime/log/,但团队协作中常需按应用(如 admin、api、index)分离日志,便于排查问题、分配责任和部署隔离。关键不是“改一个配置”,而是结合应用名动态切换日志目录,同时保持各应用日志结构独立、互不干扰。
每个应用单独配置日志路径
在每个子应用的配置目录中(如 app/admin/config/log.php),定义专属日志驱动和路径:
- 新建
app/admin/config/log.php,内容示例:
'default' => 'file',
'file' => [
'path' => runtime_path() . 'log/admin/',
'level' => ['error', 'info', 'sql'],
],
];
同理,为 app/api/config/log.php 设置 runtime_path() . 'log/api/',app/index/config/log.php 设置 runtime_path() . 'log/index/'。
注意:这些配置只在对应应用被绑定并运行时生效,不会互相覆盖。
确保日志目录可写且自动创建
TP6 不会自动创建嵌套日志路径(如 runtime/log/admin/),需手动或启动时保障:
- 部署脚本中加入:mkdir -p runtime/log/{admin,api,index}
- 或在应用入口前加逻辑(如
app/admin/route.php开头):
mkdir($path, 0755, true);
}
避免因目录缺失导致日志静默失败。
避免日志混用:禁用全局 log 配置
删除或注释掉 config/log.php 中的顶层配置(即项目根级 log 配置),否则它会作为 fallback 覆盖子应用设置:
- 确认
config/log.php为空,或仅保留注释说明:“多应用日志由各 app/*/config/log.php 独立管理” - 验证方式:访问
/admin/index/index后检查runtime/log/admin/是否有新文件;再访问/api/user/info,确认新增日志出现在runtime/log/api/而非同一目录
进阶:按应用名动态生成日志文件名
若想进一步区分,可在日志处理器中注入应用名。例如,在 app/admin/common.php 中添加:
这样每天生成 admin_2026-10-29.log,比默认的 2026-10-29.log 更易定位归属。
不复杂但容易忽略。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











