Estou usando três arquivos de ambiente para teste - .env.testing
para testes de unidade/recurso, .env.dusk.local
para testes Dusk locais e .env.dusk.testing
para testes CI/CD Dusk. Estou tentando definir o canal de log para tudo isso null
, porque não preciso de testes para registrar nada.
Quando substituo as variáveis de registro nesses arquivos por:
LOG_CHANNEL=null
...e tento executar os testes do Dusk, recebo o seguinte em meus logs:
[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]
...
Eu sei que isso deve ser possível com base na documentação e confirmei que tenho o seguinte configurado em logging.php
:
'null' => [
'driver' => 'monolog',
'handler' => NullHandler::class,
],
Também corri php artisan optimize:clear
para descartar o cache de configuração. Pelo que vale a pena, usei o Laravel Shift para atualizar para o Laravel 9 recentemente, caso seja uma dependência ou um problema específico da versão.
O Laravel não considera todas as variáveis de ambiente como string, existem palavras-chave especiais que serão convertidas para outros tipos. No seu caso,
null
parece ser convertido efetivamente para umnull
valor dentro do Laravel.Tente mudar o nome do seu canal para outro nome (
nullable
por exemplo):Ou você também pode tentar colocar
null
aspas duplas nos arquivos do seu ambiente:Referência: https://laravel.com/docs/10.x/configuration#environment-variable-types
Outra solução, que também parece não estar bem documentada, é usar
null
um driver como este: