<?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 RollbarNotifier; use Exception; use Monolog\Logger; /** * Sends errors to Rollbar * * If the context data contains a `payload` key, that is used as an array * of payload options to RollbarNotifier's report_message/report_exception methods. * * Rollbar's context info will contain the context + extra keys from the log record * merged, and then on top of that a few keys: * * - level (rollbar level name) * - monolog_level (monolog level name, raw level, as rollbar only has 5 but monolog 8) * - channel * - datetime (unix timestamp) * * @author Paul Statezny <paulstatezny@gmail.com> */ class RollbarHandler extends AbstractProcessingHandler { /** * Rollbar notifier * * @var RollbarNotifier */ protected $rollbarNotifier; protected $levelMap = array( Logger::DEBUG => 'debug', Logger::INFO => 'info', Logger::NOTICE => 'info', Logger::WARNING => 'warning', Logger::ERROR => 'error', Logger::CRITICAL => 'critical', Logger::ALERT => 'critical', Logger::EMERGENCY => 'critical', ); /** * Records whether any log records have been added since the last flush of the rollbar notifier * * @var bool */ private $hasRecords = false; protected $initialized = false; /** * @param RollbarNotifier $rollbarNotifier RollbarNotifier object constructed with valid token * @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(RollbarNotifier $rollbarNotifier, $level = Logger::ERROR, $bubble = true) { $this->rollbarNotifier = $rollbarNotifier; parent::__construct($level, $bubble); } /** * {@inheritdoc} */ protected function write(array $record) { if (!$this->initialized) { // __destructor() doesn't get called on Fatal errors register_shutdown_function(array($this, 'close')); $this->initialized = true; } $context = $record['context']; $payload = array(); if (isset($context['payload'])) { $payload = $context['payload']; unset($context['payload']); } $context = array_merge($context, $record['extra'], array( 'level' => $this->levelMap[$record['level']], 'monolog_level' => $record['level_name'], 'channel' => $record['channel'], 'datetime' => $record['datetime']->format('U'), )); if (isset($context['exception']) && $context['exception'] instanceof Exception) { $payload['level'] = $context['level']; $exception = $context['exception']; unset($context['exception']); $this->rollbarNotifier->report_exception($exception, $context, $payload); } else { $this->rollbarNotifier->report_message( $record['message'], $context['level'], $context, $payload ); } $this->hasRecords = true; } public function flush() { if ($this->hasRecords) { $this->rollbarNotifier->flush(); $this->hasRecords = false; } } /** * {@inheritdoc} */ public function close() { $this->flush(); } /** * {@inheritdoc} */ public function reset() { $this->flush(); parent::reset(); } }
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 |
|