ThinkPHP 6.1 中日志通道别名即 config/log.php 配置数组的键名,如 'wechat' ⇒ Log::channel('wechat');需全局唯一、小写+下划线、避免覆盖内置通道(file/daily等),且依赖配置正确加载。

ThinkPHP 6.1 中日志通道别名不是靠“自定义关键词”来定义的,而是通过配置文件中的键名(key)直接充当别名,且该别名会用于 Log::channel('xxx') 调用中 —— 所以定义别名 = 在配置里写一个顶层键名。
在 config/log.php 中声明通道别名
打开 config/log.php,它的返回值是一个关联数组,每一项的键就是你将来使用的通道别名:
-
'daily'→ 对应Log::channel('daily') -
'sentry'→ 对应Log::channel('sentry') -
'aliyun_arms'→ 对应Log::channel('aliyun_arms')
例如,你要新增一个上报到企业微信机器人的通道,就直接加一项:
'wechat' => [
'type' => 'custom',
'via' => \app\log\WechatLogger::class,
],
之后就能用 Log::channel('wechat')->error('服务异常');,这里的 'wechat' 就是别名,无需额外注册或映射。
立即学习“PHP免费学习笔记(深入)”;
别名必须全局唯一,且不能与内置通道冲突
TP6.1 内置了 file、daily、syslog、error_log 等默认通道。如果你在配置里也写了 'file' => [...],就会覆盖默认行为 —— 这是允许的,但需明确这是重定义,不是“新增别名”。
避免使用 PHP 关键字或含特殊符号(如空格、点号、斜杠)的键名,只推荐用小写字母+下划线组合。
别名生效依赖配置加载顺序
确保你的 config/log.php 是被框架正确加载的。如果项目用了多应用或自定义环境配置(如 config/log/prod.php),要确认当前环境实际读取的是哪个文件 —— 别名只在最终合并后的 log 配置数组中存在才有效。
可通过 dump(config('log')); 查看当前生效的全部通道别名列表。
扩展:别名可配合容器绑定做运行时切换
若需动态切换通道(比如按用户等级打不同日志),可不依赖固定别名,改用容器绑定:
app()->bind('log.channel.pay', function () {
return Log::channel('alipay_audit');
});
然后通过 app()->make('log.channel.pay')->info(...) 使用 —— 此时 'log.channel.pay' 是容器标识,不是日志通道别名,但能实现更灵活的路由逻辑。



















