我使用三个环境文件进行测试--.env.testing用于单元/特性测试,.env.dusk.local用于本地黄昏测试,.env.dusk.testing用于CI/CD黄昏测试.我正在try 将所有这些的日志(log)通道设置为null,因为我根本不需要测试来记录任何内容.

当我将这些文件中的日志(log)变量替换为:

LOG_CHANNEL=null

...并try 运行黄昏测试,我在日志(log)中得到以下信息:

[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]
...

我知道这在the documentation的基础上应该是可能的,我已经确认我在logging.php中设置了以下内容:

'null' => [
    'driver' => 'monolog',
    'handler' => NullHandler::class,
],

我还运行了php artisan optimize:clear以排除配置缓存.无论如何,我最近确实使用了Laravel Shift升级到了Laravel 9,以防这是一个依赖或版本特定的问题.

推荐答案

Laravel并不认 for each 环境变量都是字符串,有一些特殊的关键字将被转换为其他类型.在您的例子中,在Laravel内部,null似乎可以有效地转换为null值.

try 将您的频道名称更改为其他名称(例如nullable):

// in environment files use LOG_CHANNEL=nullable

'nullable' => [
    'driver' => 'monolog',
    'handler' => NullHandler::class,
],

或者,您也可以try 在环境文件中用双引号将null括起来:

LOG_CHANNEL="null"

参考文献:https://laravel.com/docs/10.x/configuration#environment-variable-types

另一种解决方案,似乎也没有很好的文档,是使用null驱动程序,如下所示:

'nullable' => [
    'driver' => 'null',
    'handler' => NullHandler::class, // probably not needed
],

Php相关问答推荐

Laravel 10查询中的多个where子句

Symfony Monolog:使用多个格式化程序

在保留唯一键值对的情况下高效合并嵌套数组

允许在WooCommerce管理员优惠券列表中显示自定义优惠券类型

使用PHP编码的字符串与使用OpenSSL编写的shell 代码之间的差异

在WooCommerce获取所有具有全球产品属性品牌的简单产品

如何在微软图形API中使用用户S访问令牌或基于租户ID的访问令牌?

根据类别的数量折扣更改WooCommerce购物车商品价格

Font Awesome 加载图标未显示在 WooCommerce 管理员列表中

调用未定义的方法 mysqli::execute_query()

调度程序不发送任何消息

循环中未序列化数组显示的问题

在 Botiga 主题模板中添加复选框到政策行.Woocommerce

Laravel auth()->id() 在生产服务器中不工作

显示时间范围内的可用空位,同时考虑已预订的空位

使用 Process facade 在外部 Laravel 项目上运行 Artisan 命令会返回主项目的数据库错误

无法在 Laravel 10 中安装 jenssegers/mongodb

来自命令行的 PHP 没有给出正确的结果

如何为多个表的id列设置不同的值

PHP获取根据辞职日期自动续订的合同终止日期