<?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 Monolog\Formatter\FormatterInterface; use Monolog\Formatter\ElasticaFormatter; use Monolog\Logger; use Elastica\Client; use Elastica\Exception\ExceptionInterface; /** * Elastic Search handler * * Usage example: * * $client = new \Elastica\Client(); * $options = array( * 'index' => 'elastic_index_name', * 'type' => 'elastic_doc_type', * ); * $handler = new ElasticSearchHandler($client, $options); * $log = new Logger('application'); * $log->pushHandler($handler); * * @author Jelle Vink <jelle.vink@gmail.com> */ class ElasticSearchHandler extends AbstractProcessingHandler { /** * @var Client */ protected $client; /** * @var array Handler config options */ protected $options = array(); /** * @param Client $client Elastica Client object * @param array $options Handler configuration * @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(Client $client, array $options = array(), $level = Logger::DEBUG, $bubble = true) { parent::__construct($level, $bubble); $this->client = $client; $this->options = array_merge( array( 'index' => 'monolog', // Elastic index name 'type' => 'record', // Elastic document type 'ignore_error' => false, // Suppress Elastica exceptions ), $options ); } /** * {@inheritDoc} */ protected function write(array $record) { $this->bulkSend(array($record['formatted'])); } /** * {@inheritdoc} */ public function setFormatter(FormatterInterface $formatter) { if ($formatter instanceof ElasticaFormatter) { return parent::setFormatter($formatter); } throw new \InvalidArgumentException('ElasticSearchHandler is only compatible with ElasticaFormatter'); } /** * Getter options * @return array */ public function getOptions() { return $this->options; } /** * {@inheritDoc} */ protected function getDefaultFormatter() { return new ElasticaFormatter($this->options['index'], $this->options['type']); } /** * {@inheritdoc} */ public function handleBatch(array $records) { $documents = $this->getFormatter()->formatBatch($records); $this->bulkSend($documents); } /** * Use Elasticsearch bulk API to send list of documents * @param array $documents * @throws \RuntimeException */ protected function bulkSend(array $documents) { try { $this->client->addDocuments($documents); } catch (ExceptionInterface $e) { if (!$this->options['ignore_error']) { throw new \RuntimeException("Error sending messages to Elasticsearch", 0, $e); } } } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Curl | Folder | 0755 |
|
|
FingersCrossed | Folder | 0755 |
|
|
Slack | Folder | 0755 |
|
|
SyslogUdp | Folder | 0755 |
|
|
AbstractHandler.php | File | 4.28 KB | 0644 |
|
AbstractProcessingHandler.php | File | 1.5 KB | 0644 |
|
AbstractSyslogHandler.php | File | 3.29 KB | 0644 |
|
AmqpHandler.php | File | 3.78 KB | 0644 |
|
BrowserConsoleHandler.php | File | 7.21 KB | 0644 |
|
BufferHandler.php | File | 3.58 KB | 0644 |
|
ChromePHPHandler.php | File | 5.48 KB | 0644 |
|
CouchDBHandler.php | File | 1.91 KB | 0644 |
|
CubeHandler.php | File | 4.52 KB | 0644 |
|
DeduplicationHandler.php | File | 5.35 KB | 0644 |
|
DoctrineCouchDBHandler.php | File | 1000 B | 0644 |
|
DynamoDbHandler.php | File | 2.38 KB | 0644 |
|
ElasticSearchHandler.php | File | 3.33 KB | 0644 |
|
ErrorLogHandler.php | File | 2.31 KB | 0644 |
|
FilterHandler.php | File | 4.32 KB | 0644 |
|
FingersCrossedHandler.php | File | 5.77 KB | 0644 |
|
FirePHPHandler.php | File | 5.33 KB | 0644 |
|
FleepHookHandler.php | File | 3.28 KB | 0644 |
|
FlowdockHandler.php | File | 3.28 KB | 0644 |
|
GelfHandler.php | File | 1.91 KB | 0644 |
|
GroupHandler.php | File | 2.69 KB | 0644 |
|
HandlerInterface.php | File | 2.53 KB | 0644 |
|
HandlerWrapper.php | File | 2.31 KB | 0644 |
|
HipChatHandler.php | File | 10.51 KB | 0644 |
|
IFTTTHandler.php | File | 2.06 KB | 0644 |
|
InsightOpsHandler.php | File | 1.83 KB | 0644 |
|
LogEntriesHandler.php | File | 1.58 KB | 0644 |
|
LogglyHandler.php | File | 2.56 KB | 0644 |
|
MailHandler.php | File | 1.58 KB | 0644 |
|
MandrillHandler.php | File | 2.11 KB | 0644 |
|
MissingExtensionException.php | File | 450 B | 0644 |
|
MongoDBHandler.php | File | 1.57 KB | 0644 |
|
NativeMailerHandler.php | File | 5.08 KB | 0644 |
|
NewRelicHandler.php | File | 6.06 KB | 0644 |
|
NullHandler.php | File | 953 B | 0644 |
|
PHPConsoleHandler.php | File | 9.76 KB | 0644 |
|
PsrHandler.php | File | 1.4 KB | 0644 |
|
PushoverHandler.php | File | 6.47 KB | 0644 |
|
RavenHandler.php | File | 6.96 KB | 0644 |
|
RedisHandler.php | File | 2.82 KB | 0644 |
|
RollbarHandler.php | File | 3.85 KB | 0644 |
|
RotatingFileHandler.php | File | 5.75 KB | 0644 |
|
SamplingHandler.php | File | 2.61 KB | 0644 |
|
SlackHandler.php | File | 6.3 KB | 0644 |
|
SlackWebhookHandler.php | File | 3.73 KB | 0644 |
|
SlackbotHandler.php | File | 1.98 KB | 0644 |
|
SocketHandler.php | File | 9.58 KB | 0644 |
|
StreamHandler.php | File | 5.1 KB | 0644 |
|
SwiftMailerHandler.php | File | 3.36 KB | 0644 |
|
SyslogHandler.php | File | 1.8 KB | 0644 |
|
SyslogUdpHandler.php | File | 2.51 KB | 0644 |
|
TestHandler.php | File | 5.01 KB | 0644 |
|
WhatFailureGroupHandler.php | File | 1.76 KB | 0644 |
|
ZendMonitorHandler.php | File | 2.19 KB | 0644 |
|