Log::record()在ThinkPHP 6.0中已废弃,应改用think\facade\Log::write()方法写入日志,支持指定级别、channel和上下文,并需预先配置channel及目录权限。

在 ThinkPHP 6.0 中,Log::record() 是一个**已废弃的写法**,官方从 TP6 开始全面转向 PSR-3 兼容的日志系统(基于 think\facade\Log),不再支持直接用 Log::record() 写入日志。如果你在代码里写了这行却没生效,大概率是因为它根本不会被识别或执行。
✅ 正确方式:使用 Log Facade 的 write() 方法
TP6 推荐通过 think\facade\Log 写入自定义日志,支持指定日志级别、通道(channel)和上下文内容:
-
基础写入(默认 channel + info 级别):
Log::write('用户登录成功', 'info'); -
指定 channel(如写入单独的 admin.log):
Log::channel('admin')->write('管理员操作:删除用户ID=100', 'notice'); -
带上下文(结构化数据,便于排查):
Log::write('订单支付失败', 'error', ['order_id' => 2024001, 'code' => 'PAY_TIMEOUT']);
⚙️ 前置配置:确保 channel 已定义
若要用自定义 channel(比如 admin),需先在 config/log.php 中配置:
- 在
'channels'数组里添加一项:
'admin' => [
'type' => 'File',
'path' => app()->getRuntimePath() . 'log/admin/',
'level' => 'debug'
], - 确保对应目录存在且可写(如
runtime/log/admin/)
? 日志级别说明(常用)
TP6 支持标准 PSR-3 级别,按严重程度升序排列:
- 'debug' —— 调试信息(开发时用)
- 'info' —— 一般运行信息(如登录、查询)
- 'notice' —— 需关注但非错误(如权限变更)
- 'warning' —— 潜在问题(如接口超时)
- 'error' —— 运行时错误(如数据库异常)
- 'critical' / 'alert' / 'emergency' —— 严重故障
? 小技巧:封装成助手函数更方便
可在 app/common.php 中加一个快捷函数:
- function log_admin($msg, $level = 'info', $context = []) {
return \think\facade\Log::channel('admin')->write($msg, $level, $context);
} - 之后直接调用:log_admin('导出报表完成', 'info', ['count' => 125]);
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











