ThinkPHP6改为单文件日志需设置'single' => true并指定含文件名的完整路径。在config/log.php中配置file通道,path必须为runtime_path('log') . 'think.log'等带扩展名的绝对路径,不可仅为目录,否则仍按日期分目录生成。

ThinkPHP6 默认按日期分目录生成日志(如 runtime/log/2026-10/29.log),若需改为单文件日志模式,关键在于关闭日期分层、启用 single => true,并确保路径配置合理。
配置单文件日志的核心设置
在 config/log.php 中定位 file 通道配置,重点修改以下两项:
-
'single' => true:强制所有日志写入同一个文件(默认为think.log) -
'path' => runtime_path('log') . 'think.log'或自定义绝对路径(如/data/logs/think.log),避免留空或仅设目录
示例片段:
'channels' => [
'file' => [
'type' => 'File',
'path' => runtime_path('log') . 'think.log', // 明确指定完整文件路径
'single' => true, // 必须设为 true
'max_files' => 0,
'realtime_write' => false,
],
],⚠️ 注意:
'path'值必须包含文件名(如think.log),不能只写目录(如runtime_path('log'))。否则 TP6 会自动补上日期子目录,导致单文件失效。立即学习“PHP免费学习笔记(深入)”;
补充建议
- 确保
runtime/log/目录可写,且 Web 进程有权限创建和追加该.log文件 - 若希望日志滚动(如按大小切分),可配合
'file_size' => 1024 * 1024 * 5(5MB)和'max_files' => 10,但此时已不属于“纯单文件”,而是轮转模式 - 日志级别(
'level')不影响单文件结构,仅控制哪些消息被记录
不复杂但容易忽略。



















