当配置的 URL 为空时禁用 Laravel Slack 日志记录

问题描述 投票:0回答:1

这是我的 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,在...中调用

php laravel logging slack
1个回答
1
投票
通常,要在 Laravel 应用程序中使用多个日志记录通道(单个文件、每日文件、松弛通知等),您可以使用

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
 文件)。

© www.soinside.com 2019 - 2024. All rights reserved.