You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel调用logins日志通道报Unable to create configured logger错误

Laravel自定义日志通道报"Log [logins] is not defined"排查修复方案

按以下顺序逐一排查,大部分场景下前两步就能解决问题:

  • 第一步:清理配置缓存
    这是该报错最高发的原因,Laravel开启配置缓存后会直接读取缓存文件,不会实时加载config目录下的文件改动,执行以下命令清理缓存:
    php artisan config:clear
    php artisan cache:clear
    
    如果是生产环境,清理后重新生成配置缓存即可:
    php artisan config:cache
    
  • 第二步:验证配置是否被正确加载
    执行以下命令查看Laravel实际加载的日志配置,确认输出的channels列表中存在logins键:
    php artisan config:show logging
    
    如果输出里没有logins配置,检查config/logging.php文件是否存在语法错误(比如括号不匹配、数组键值对少写逗号),确认logins配置是直接放在channels数组的一级节点下,没有嵌套到stack或其他通道的配置内部。
  • 第三步:检查自定义日志类实现是否符合规范
    custom驱动要求via指定的类必须包含__invoke方法,且方法返回Monolog\Logger实例,否则Laravel解析通道失败会抛出通道不存在的错误:
    1. 确认App\Services\Logging\MongoLogger类文件路径正确,命名空间和类名和配置里写的完全一致,类可以被正常自动加载
    2. 确认类中存在__invoke(array $config)方法,方法内正确读取传入的$config参数(配置里的name、database、collection都会以数组形式传入该方法),并返回合法的Monolog实例,参考正确的类结构:
    <?php
    
    namespace App\Services\Logging;
    
    use Monolog\Logger;
    use Monolog\Handler\MongoDBHandler;
    
    class MongoLogger
    {
        public function __invoke(array $config)
        {
            $logger = new Logger($config['name']);
            // 此处根据你的Mongo连接方式实例化对应Handler,绑定到$logger
            // 示例:$handler = new MongoDBHandler(new \MongoDB\Client(), $config['database'], $config['collection']);
            // $logger->pushHandler($handler);
            return $logger;
        }
    }
    
  • 第四步:确认调用引入的Facade正确
    检查写入日志的文件头部,确认Log门面引入正确,没有引入其他同名类:
    use Illuminate\Support\Facades\Log;
    

补充说明:如果执行config:show能看到logins配置,但依然报错,检查你的代码里有没有提前调用Log相关方法、或者在服务提供者启动阶段就触发了日志加载,导致配置还没加载完成就被解析。

内容的提问来源于stack exchange,提问作者Mukesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:36:46