Вход Регистрация
Файл: vendor/spatie/laravel-ignition/src/Support/FlareLogHandler.php
Строк: 87
<?php

namespace SpatieLaravelIgnitionSupport;

use 
InvalidArgumentException;
use 
MonologHandlerAbstractProcessingHandler;
use 
MonologLogger;
use 
SpatieFlareClientFlare;
use 
SpatieFlareClientReport;
use 
Throwable;

class 
FlareLogHandler extends AbstractProcessingHandler
{
    protected 
Flare $flare;

    protected 
SentReports $sentReports;

    protected 
int $minimumReportLogLevel Logger::ERROR;

    public function 
__construct(Flare $flareSentReports $sentReports$level Logger::DEBUG$bubble true)
    {
        
$this->flare $flare;

        
$this->sentReports $sentReports;

        
parent::__construct($level$bubble);
    }

    public function 
setMinimumReportLogLevel(int $level): void
    
{
        if (! 
in_array($levelLogger::getLevels())) {
            throw new 
InvalidArgumentException('The given minimum log level is not supported.');
        }

        
$this->minimumReportLogLevel $level;
    }

    protected function 
write(array $record): void
    
{
        if (! 
$this->shouldReport($record)) {
            return;
        }
        if (
$this->hasException($record)) {
            
$report $this->flare->report($record['context']['exception']);

            if (
$report) {
                
$this->sentReports->add($report);
            }

            return;
        }

        if (
config('flare.send_logs_as_events')) {
            if (
$this->hasValidLogLevel($record)) {
                
$this->flare->reportMessage(
                    
$record['message'],
                    
'Log ' Logger::getLevelName($record['level']),
                    function (
Report $flareReport) use ($record) {
                        foreach (
$record['context'] as $key => $value) {
                            
$flareReport->context($key$value);
                        }
                    }
                );
            }
        }
    }

    
/**
     * @param array<string, mixed> $report
     *
     * @return bool
     */
    
protected function shouldReport(array $report): bool
    
{
        if (! 
config('flare.key')) {
            return 
false;
        }

        return 
$this->hasException($report) || $this->hasValidLogLevel($report);
    }

    
/**
     * @param array<string, mixed> $report
     *
     * @return bool
     */
    
protected function hasException(array $report): bool
    
{
        
$context $report['context'];

        return isset(
$context['exception']) && $context['exception'] instanceof Throwable;
    }

    
/**
     * @param array<string, mixed> $report
     *
     * @return bool
     */
    
protected function hasValidLogLevel(array $report): bool
    
{
        return 
$report['level'] >= $this->minimumReportLogLevel;
    }
}
Онлайн: 0
Реклама