Subversion-Projekte lars-tiefland.laravel_shop

Revision

Zur aktuellen 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\Formatter;
13
 
14
/**
15
 * formats the record to be used in the FlowdockHandler
16
 *
17
 * @author Dominik Liebler <liebler.dominik@gmail.com>
18
 */
19
class FlowdockFormatter implements FormatterInterface
20
{
21
    /**
22
     * @var string
23
     */
24
    private $source;
25
 
26
    /**
27
     * @var string
28
     */
29
    private $sourceEmail;
30
 
31
    public function __construct(string $source, string $sourceEmail)
32
    {
33
        $this->source = $source;
34
        $this->sourceEmail = $sourceEmail;
35
    }
36
 
37
    /**
38
     * {@inheritDoc}
39
     *
40
     * @return mixed[]
41
     */
42
    public function format(array $record): array
43
    {
44
        $tags = [
45
            '#logs',
46
            '#' . strtolower($record['level_name']),
47
            '#' . $record['channel'],
48
        ];
49
 
50
        foreach ($record['extra'] as $value) {
51
            $tags[] = '#' . $value;
52
        }
53
 
54
        $subject = sprintf(
55
            'in %s: %s - %s',
56
            $this->source,
57
            $record['level_name'],
58
            $this->getShortMessage($record['message'])
59
        );
60
 
61
        $record['flowdock'] = [
62
            'source' => $this->source,
63
            'from_address' => $this->sourceEmail,
64
            'subject' => $subject,
65
            'content' => $record['message'],
66
            'tags' => $tags,
67
            'project' => $this->source,
68
        ];
69
 
70
        return $record;
71
    }
72
 
73
    /**
74
     * {@inheritDoc}
75
     *
76
     * @return mixed[][]
77
     */
78
    public function formatBatch(array $records): array
79
    {
80
        $formatted = [];
81
 
82
        foreach ($records as $record) {
83
            $formatted[] = $this->format($record);
84
        }
85
 
86
        return $formatted;
87
    }
88
 
89
    public function getShortMessage(string $message): string
90
    {
91
        static $hasMbString;
92
 
93
        if (null === $hasMbString) {
94
            $hasMbString = function_exists('mb_strlen');
95
        }
96
 
97
        $maxLength = 45;
98
 
99
        if ($hasMbString) {
100
            if (mb_strlen($message, 'UTF-8') > $maxLength) {
101
                $message = mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...';
102
            }
103
        } else {
104
            if (strlen($message) > $maxLength) {
105
                $message = substr($message, 0, $maxLength - 4) . ' ...';
106
            }
107
        }
108
 
109
        return $message;
110
    }
111
}