Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php declare(strict_types=1);
2
 
3
/*
4
 * This file is part of the Monolog package.
5
 *
6
 * (c) Jordi Boggiano <j.boggiano@seld.be>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
 
12
namespace Monolog\Handler;
13
 
14
use Monolog\Formatter\FormatterInterface;
15
use Monolog\Formatter\NormalizerFormatter;
16
use Monolog\Logger;
17
 
18
/**
19
 * Handler sending logs to Zend Monitor
20
 *
21
 * @author  Christian Bergau <cbergau86@gmail.com>
22
 * @author  Jason Davis <happydude@jasondavis.net>
23
 *
24
 * @phpstan-import-type FormattedRecord from AbstractProcessingHandler
25
 */
26
class ZendMonitorHandler extends AbstractProcessingHandler
27
{
28
    /**
29
     * Monolog level / ZendMonitor Custom Event priority map
30
     *
31
     * @var array<int, int>
32
     */
33
    protected $levelMap = [];
34
 
35
    /**
36
     * @throws MissingExtensionException
37
     */
38
    public function __construct($level = Logger::DEBUG, bool $bubble = true)
39
    {
40
        if (!function_exists('zend_monitor_custom_event')) {
41
            throw new MissingExtensionException(
42
                'You must have Zend Server installed with Zend Monitor enabled in order to use this handler'
43
            );
44
        }
45
        //zend monitor constants are not defined if zend monitor is not enabled.
46
        $this->levelMap = [
47
            Logger::DEBUG     => \ZEND_MONITOR_EVENT_SEVERITY_INFO,
48
            Logger::INFO      => \ZEND_MONITOR_EVENT_SEVERITY_INFO,
49
            Logger::NOTICE    => \ZEND_MONITOR_EVENT_SEVERITY_INFO,
50
            Logger::WARNING   => \ZEND_MONITOR_EVENT_SEVERITY_WARNING,
51
            Logger::ERROR     => \ZEND_MONITOR_EVENT_SEVERITY_ERROR,
52
            Logger::CRITICAL  => \ZEND_MONITOR_EVENT_SEVERITY_ERROR,
53
            Logger::ALERT     => \ZEND_MONITOR_EVENT_SEVERITY_ERROR,
54
            Logger::EMERGENCY => \ZEND_MONITOR_EVENT_SEVERITY_ERROR,
55
        ];
56
        parent::__construct($level, $bubble);
57
    }
58
 
59
    /**
60
     * {@inheritDoc}
61
     */
62
    protected function write(array $record): void
63
    {
64
        $this->writeZendMonitorCustomEvent(
65
            Logger::getLevelName($record['level']),
66
            $record['message'],
67
            $record['formatted'],
68
            $this->levelMap[$record['level']]
69
        );
70
    }
71
 
72
    /**
73
     * Write to Zend Monitor Events
74
     * @param string $type      Text displayed in "Class Name (custom)" field
75
     * @param string $message   Text displayed in "Error String"
76
     * @param array  $formatted Displayed in Custom Variables tab
77
     * @param int    $severity  Set the event severity level (-1,0,1)
78
     *
79
     * @phpstan-param FormattedRecord $formatted
80
     */
81
    protected function writeZendMonitorCustomEvent(string $type, string $message, array $formatted, int $severity): void
82
    {
83
        zend_monitor_custom_event($type, $message, $formatted, $severity);
84
    }
85
 
86
    /**
87
     * {@inheritDoc}
88
     */
89
    public function getDefaultFormatter(): FormatterInterface
90
    {
91
        return new NormalizerFormatter();
92
    }
93
 
94
    /**
95
     * @return array<int, int>
96
     */
97
    public function getLevelMap(): array
98
    {
99
        return $this->levelMap;
100
    }
101
}