我使用三个环境文件进行测试-.env.testing
用于单元/功能测试,.env.dusk.local
用于本地Dusk测试,.env.dusk.testing
用于CI/CD Dusk测试。我试图将所有这些的日志通道设置为null
,因为我根本不需要测试来记录任何东西。
当我将这些文件中的日志变量替换为:
LOG_CHANNEL=null
字符串
.并尝试运行黄昏测试,我得到以下在我的日志:
[2023-10-26 18:38:28] laravel.EMERGENCY: Unable to create configured logger. Using emergency logger. {"exception":"[object] (InvalidArgumentException(code: 0): Log [] is not defined. at D:\\Path\\To\\Site\\mysite\\vendor\\laravel\\framework\\src\\Illuminate\\Log\\LogManager.php:210)
[stacktrace]
...
型
根据文档,我知道这是可能的,并且我已经确认在logging.php
中设置了以下内容:
'null' => [
'driver' => 'monolog',
'handler' => NullHandler::class,
],
型
我还运行了php artisan optimize:clear
来排除配置缓存。为了它的价值,我最近确实使用了Laravel Shift升级到Laravel 9,以防这是一个依赖或版本特定的问题。
2条答案
按热度按时间z3yyvxxp1#
Laravel并不把每个环境变量都看作字符串,有一些特殊的关键字会被转换成其他类型。在你的例子中,
null
似乎在Laravel中被有效地转换成了null
值。尝试将您的频道名称更改为其他名称(例如
nullable
):字符串
或者,您也可以尝试在环境文件中将
null
括在双引号内:型
参考:https://laravel.com/docs/10.x/configuration#environment-variable-types
另一个解决方案,也似乎没有很好的文档,是像这样使用
null
驱动程序:型
dxxyhpgq2#
Alberto的解决方案是这里要走的路,但我不建议重命名主null logger,以防它破坏其他依赖它的东西-相反,我最终在
logging.php
中创建了一个自定义logger,它也使用了Monolog的Nulllogger:字符串
然后在我的环境文件中使用新的logger:
型