ThinkPHP6运行时日志默认存于runtime/log/目录,按日期命名(如2024-05-20.log),UTF-8编码,每行一条含时间、级别、消息及JSON上下文的日志;可直接读取文件,需确保路径正确、权限可读、编码一致。

ThinkPHP6 的运行时日志默认写入 runtime/log/ 目录下,按日期分文件(如 2024-05-20.log),读取日志内容无需框架介入,直接读取文件即可,但需注意路径、编码和权限问题。
确认日志存储位置与格式
ThinkPHP6 默认日志路径为 runtime/log/,由配置项 log.path 控制。可通过以下方式确认:
- 查看
config/log.php中的'path' => env('LOG_PATH', runtime_path() . 'log' . DIRECTORY_SEPARATOR) - 运行
php think run后检查runtime/log/是否有新生成的日期命名文件 - 日志采用 UTF-8 编码,每行一条记录,含时间、级别、消息、上下文(JSON 格式)等字段
用 PHP 脚本读取最新日志文件
可编写一个简单命令行脚本快速查看最近的日志内容:
<?php
$logDir = dirname(__DIR__) . '/runtime/log/';
$files = glob($logDir . '*.log');
if (empty($files)) {
echo "未找到日志文件\n";
exit;
}
$latest = array_reduce($files, function($a, $b) {
return filemtime($a) > filemtime($b) ? $a : $b;
});
$content = file_get_contents($latest);
echo mb_convert_encoding($content, 'UTF-8', 'UTF-8'); // 确保终端正确显示
保存为 read-log.php,在项目根目录执行 php read-log.php 即可输出最新日志。
立即学习“PHP免费学习笔记(深入)”;
使用命令行快速查看(Linux/macOS)
开发调试时更推荐终端命令,高效直观:
- 查看最新日志:
tail -f runtime/log/$(ls -t runtime/log/*.log | head -1) - 实时追踪并高亮错误:
tail -f runtime/log/*.log | grep --line-buffered -i 'error\|exception\|critical' - 查看最近 50 行:
tail -n 50 $(ls -t runtime/log/*.log | head -1)
注意:确保 runtime/log/ 目录可读,Web 服务器用户(如 www-data)或当前 CLI 用户有对应权限。
通过控制器临时输出日志(仅限调试环境)
若需在 Web 页面中查看(例如本地开发),可在控制器中添加临时接口(切勿用于生产):
public function showLog()
{
$logFile = runtime_path('log') . date('Y-m-d') . '.log';
if (!is_file($logFile)) {
return '今日暂无日志';
}
$content = file_get_contents($logFile);
return highlight_string(str_replace("\n", "<br>", htmlspecialchars($content)), true);
}
访问该接口时会以 HTML 形式展示当日日志,并自动转义特殊字符防止 XSS。
不复杂但容易忽略的是日志文件权限和编码一致性;只要路径正确、有读取权限,读取本身是标准文件操作,无需调用 TP6 日志类。



















