| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 | <?php
 /*
 * This file is part of the Monolog package.
 *
 * (c) Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
 namespace Monolog\Handler;
 
 use Gelf\IMessagePublisher;
 use Gelf\PublisherInterface;
 use Gelf\Publisher;
 use InvalidArgumentException;
 use Monolog\Logger;
 use Monolog\Formatter\GelfMessageFormatter;
 
 /**
 * Handler to send messages to a Graylog2 (http://www.graylog2.org) server
 *
 * @author Matt Lehner <mlehner@gmail.com>
 * @author Benjamin Zikarsky <benjamin@zikarsky.de>
 */
 class GelfHandler extends AbstractProcessingHandler
 {
 /**
 * @var Publisher the publisher object that sends the message to the server
 */
 protected $publisher;
 
 /**
 * @param PublisherInterface|IMessagePublisher|Publisher $publisher a publisher object
 * @param int                                            $level     The minimum logging level at which this handler will be triggered
 * @param bool                                           $bubble    Whether the messages that are handled can bubble up the stack or not
 */
 public function __construct($publisher, $level = Logger::DEBUG, $bubble = true)
 {
 parent::__construct($level, $bubble);
 
 if (!$publisher instanceof Publisher && !$publisher instanceof IMessagePublisher && !$publisher instanceof PublisherInterface) {
 throw new InvalidArgumentException('Invalid publisher, expected a Gelf\Publisher, Gelf\IMessagePublisher or Gelf\PublisherInterface instance');
 }
 
 $this->publisher = $publisher;
 }
 
 /**
 * {@inheritdoc}
 */
 public function close()
 {
 $this->publisher = null;
 }
 
 /**
 * {@inheritdoc}
 */
 protected function write(array $record)
 {
 $this->publisher->publish($record['formatted']);
 }
 
 /**
 * {@inheritDoc}
 */
 protected function getDefaultFormatter()
 {
 return new GelfMessageFormatter();
 }
 }
 
 |