* * 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 * * @author Paul Statezny */ class RollbarHandler extends AbstractProcessingHandler { /** * Rollbar notifier * * @var RollbarNotifier */ protected $rollbarNotifier; /** * @param RollbarNotifier $rollbarNotifier RollbarNotifier object constructed with valid token * @param integer $level The minimum logging level at which this handler will be triggered * @param boolean $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 (isset($record['context']['exception']) && $record['context']['exception'] instanceof Exception) { $this->rollbarNotifier->report_exception($record['context']['exception']); } else { $extraData = array( 'level' => $record['level'], 'channel' => $record['channel'], 'datetime' => $record['datetime']->format('U'), ); $this->rollbarNotifier->report_message( $record['message'], $record['level_name'], array_merge($record['context'], $record['extra'], $extraData) ); } } /** * {@inheritdoc} */ public function close() { $this->rollbarNotifier->flush(); } }