Completed
Push — master ( 9a4f90...d093fb )
by Christoph, René
02:01
created

MonologHandler   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 3
dl 0
loc 47
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 17 1
A write() 0 15 2
1
<?php
2
3
namespace RenePardon\GelfSupport\GelfBundle;
4
5
use Gelf\Message;
6
use Gelf\Publisher;
7
use Gelf\Transport\UdpTransport;
8
use Monolog\Handler\GelfHandler;
9
use Monolog\Logger;
10
use Symfony\Component\DependencyInjection\Container;
11
12
/**
13
 * Class MonologHandler
14
 *
15
 * @package RenePardon\GelfSupport\GelfBundle
16
 */
17
class MonologHandler extends GelfHandler
18
{
19
    /**
20
     * @var Container
21
     */
22
    protected $serviceContainer;
23
24
    /**
25
     * @param Container $serviceContainer
26
     */
27
    public function __construct(Container $serviceContainer)
28
    {
29
        $this->serviceContainer = $serviceContainer;
30
31
        $transport = new UdpTransport(
32
            $this->serviceContainer->getParameter('graylog.host'),
33
            $this->serviceContainer->getParameter('graylog.port'),
34
            // static::$host,
35
            // static::$port,
36
            UdpTransport::CHUNK_SIZE_LAN
37
        );
38
39
        $publisher = new Publisher();
40
        $publisher->addTransport($transport);
41
42
        parent::__construct($publisher, Logger::NOTICE, true);
43
    }
44
45
    /**
46
     * {@inheritdoc}
47
     */
48
    protected function write(array $record)
49
    {
50
        if ($this->serviceContainer->getParameter('graylog.enabled')) {
51
52
            $facility = 'gelf-php';
53
            $record['channel'] = $facility;
54
55
            /** @var Message $gelfMessage */
56
            $gelfMessage = $record['formatted'];
57
            $gelfMessage->setFacility($facility);
58
            $record['formatted'] = $gelfMessage;
59
60
            $this->publisher->publish($record['formatted']);
61
        }
62
    }
63
}
64