Настройка сообщений Laravel Log с использованием Slack Chanel - PullRequest
0 голосов
/ 11 сентября 2018

Недавно я установил Laravel 5.7 и включил Slack Logging, используя файл config/logging.php.Это работает, но содержание сообщения, отправленного в Slack, недостаточно.Кто-нибудь может подсказать мне, как настроить сообщение, отправленное в Slack?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

На config/logging.php у вас должна быть запись для слабины со следующими записями

'slack' => [
    'driver' => 'slack',
    'url' => /* SLACK URL */,
    'username' =>  /* SLACK USERNAME */,
    'emoji' =>  /* SLACK EMOJI */,
    'level' => 'error', //Change this to the level required
    'short' => true //This will generate a short error message to Slack
],

С коротким параметром, установленным в true, я получаю Контекст исключения.

Это относится к параметрам, предоставляемым функции createSlackDriver в Illuminate/Log/LogManager.php ( больше информации в GitHub Laravel 5.6 , или к той же функции, но другой строке в Laravel 5.7 )

0 голосов
/ 11 сентября 2018

Вы не можете получить номер строки из трассировки стека, откуда вы знаете, какую из трассировки получить.И slack не позволяет html-контенту выпустить весь след стека, нормализованный в html-формат.Если вы хотите получать уведомления об ошибках с правильной трассировкой стека, используйте Mail.Используйте код, подобный приведенному ниже, в вашем приложении \ Exception \ Handler.php, и вы будете получать уведомления по электронной почте о каждом исключении, вы также можете включить несколько электронных писем.

<?php

namespace App\Exceptions;

use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

use Mail;
use Symfony\Component\Debug\Exception\FlattenException;
use Symfony\Component\Debug\ExceptionHandler as SymfonyExceptionHandler;
use App\Mail\ExceptionOccured;

class Handler extends ExceptionHandler
{
    /**
     * A list of the exception types that are not reported.
     *
     * @var array
     */
    protected $dontReport = [
        //
    ];

    /**
     * A list of the inputs that are never flashed for validation exceptions.
     *
     * @var array
     */
    protected $dontFlash = [
        'password',
        'password_confirmation',
    ];

    /**
     * Report or log an exception.
     *
     * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
     *
     * @param  \Exception  $exception
     * @return void
     */
    public function report(Exception $exception)
    {
        if ($this->shouldReport($exception)) {
            $this->sendEmail($exception); // sends an email
        }


        parent::report($exception);
    }

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $exception)
    {
        return parent::render($request, $exception);
    }

    public function sendEmail(Exception $exception)
    {
        try {
            $e = FlattenException::create($exception);

            $handler = new SymfonyExceptionHandler();

            $html = $handler->getHtml($e);

            Mail::to('sdfsdfsdf@gmail.com')->send(new ExceptionOccured($html));
        } catch (Exception $ex) {
            dd($ex);
        }
    }
}

Настройте вашу почту.

...