这是我的 Slack 日志通道的配置:
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => env('LOG_LEVEL', 'critical'),
'replace_placeholders' => true,
],
当
LOG_SLACK_WEBHOOK_URL
中未设置 .env
时,我希望不使用该通道。我怎样才能做到这一点?
目前,如果我未设置
LOG_SLACK_WEBHOOK_URL
,我会收到此异常:
TypeError: Monolog\Handler\SlackWebhookHandler::__construct(): 参数 #1 ($webhookUrl) 必须是字符串类型,给定 null,在...中调用
stack
驱动程序:在
config/logging.php
:
<?php
return [
'default' => env('LOG_CHANNEL', 'stack'),
// ...
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'ignore_exceptions' => false
],
];
默认情况下,仅提供单个通道。如果您想根据条件使用多个通道,可以使用内联三元组:
'channels' => ['single', env('LOG_SLACK_WEBHOOK_URL') ? 'slack' : null],
// OR
'channels' => env('LOG_SLACK_WEBHOOK_URL') ? ['single', 'slack'] : ['single'],
在这种情况下,仅当 slack
文件中设置了
LOG_SLACK_WEBHOOK_URL
时,才会包含
.env
通道,否则仅使用
single
通道(单个
laravel.log
文件)。