summaryrefslogtreecommitdiff
path: root/vendor/monolog/monolog/src/Monolog/Handler
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/monolog/monolog/src/Monolog/Handler')
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php184
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php66
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php92
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php98
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php184
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php117
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php204
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php72
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php145
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php45
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php89
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php128
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php82
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php140
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php28
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php59
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php34
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php150
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php195
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php126
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php103
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php72
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php80
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php90
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php300
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php55
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php98
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php55
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php69
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php21
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php55
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php155
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php174
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php45
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php56
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php172
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php181
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php58
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php73
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php153
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php83
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php234
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php284
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php104
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php56
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php67
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php46
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php80
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php140
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php57
-rw-r--r--vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php95
51 files changed, 0 insertions, 5549 deletions
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php
deleted file mode 100644
index 69ede49a..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?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\Logger;
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Formatter\LineFormatter;
-
-/**
- * Base Handler class providing the Handler structure
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-abstract class AbstractHandler implements HandlerInterface
-{
- protected $level = Logger::DEBUG;
- protected $bubble = true;
-
- /**
- * @var FormatterInterface
- */
- protected $formatter;
- protected $processors = array();
-
- /**
- * @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($level = Logger::DEBUG, $bubble = true)
- {
- $this->setLevel($level);
- $this->bubble = $bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isHandling(array $record)
- {
- return $record['level'] >= $this->level;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- foreach ($records as $record) {
- $this->handle($record);
- }
- }
-
- /**
- * Closes the handler.
- *
- * This will be called automatically when the object is destroyed
- */
- public function close()
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function pushProcessor($callback)
- {
- if (!is_callable($callback)) {
- throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given');
- }
- array_unshift($this->processors, $callback);
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function popProcessor()
- {
- if (!$this->processors) {
- throw new \LogicException('You tried to pop from an empty processor stack.');
- }
-
- return array_shift($this->processors);
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFormatter(FormatterInterface $formatter)
- {
- $this->formatter = $formatter;
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getFormatter()
- {
- if (!$this->formatter) {
- $this->formatter = $this->getDefaultFormatter();
- }
-
- return $this->formatter;
- }
-
- /**
- * Sets minimum logging level at which this handler will be triggered.
- *
- * @param integer $level
- * @return self
- */
- public function setLevel($level)
- {
- $this->level = Logger::toMonologLevel($level);
-
- return $this;
- }
-
- /**
- * Gets minimum logging level at which this handler will be triggered.
- *
- * @return integer
- */
- public function getLevel()
- {
- return $this->level;
- }
-
- /**
- * Sets the bubbling behavior.
- *
- * @param Boolean $bubble true means that this handler allows bubbling.
- * false means that bubbling is not permitted.
- * @return self
- */
- public function setBubble($bubble)
- {
- $this->bubble = $bubble;
-
- return $this;
- }
-
- /**
- * Gets the bubbling behavior.
- *
- * @return Boolean true means that this handler allows bubbling.
- * false means that bubbling is not permitted.
- */
- public function getBubble()
- {
- return $this->bubble;
- }
-
- public function __destruct()
- {
- try {
- $this->close();
- } catch (\Exception $e) {
- // do nothing
- }
- }
-
- /**
- * Gets the default formatter.
- *
- * @return FormatterInterface
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php
deleted file mode 100644
index 6f18f72e..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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;
-
-/**
- * Base Handler class providing the Handler structure
- *
- * Classes extending it should (in most cases) only implement write($record)
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author Christophe Coevoet <stof@notk.org>
- */
-abstract class AbstractProcessingHandler extends AbstractHandler
-{
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if (!$this->isHandling($record)) {
- return false;
- }
-
- $record = $this->processRecord($record);
-
- $record['formatted'] = $this->getFormatter()->format($record);
-
- $this->write($record);
-
- return false === $this->bubble;
- }
-
- /**
- * Writes the record down to the log of the implementing handler
- *
- * @param array $record
- * @return void
- */
- abstract protected function write(array $record);
-
- /**
- * Processes a record.
- *
- * @param array $record
- * @return array
- */
- protected function processRecord(array $record)
- {
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- return $record;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php
deleted file mode 100644
index 3eb83bd4..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?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\Logger;
-use Monolog\Formatter\LineFormatter;
-
-/**
- * Common syslog functionality
- */
-abstract class AbstractSyslogHandler extends AbstractProcessingHandler
-{
- protected $facility;
-
- /**
- * Translates Monolog log levels to syslog log priorities.
- */
- protected $logLevels = array(
- Logger::DEBUG => LOG_DEBUG,
- Logger::INFO => LOG_INFO,
- Logger::NOTICE => LOG_NOTICE,
- Logger::WARNING => LOG_WARNING,
- Logger::ERROR => LOG_ERR,
- Logger::CRITICAL => LOG_CRIT,
- Logger::ALERT => LOG_ALERT,
- Logger::EMERGENCY => LOG_EMERG,
- );
-
- /**
- * List of valid log facility names.
- */
- protected $facilities = array(
- 'auth' => LOG_AUTH,
- 'authpriv' => LOG_AUTHPRIV,
- 'cron' => LOG_CRON,
- 'daemon' => LOG_DAEMON,
- 'kern' => LOG_KERN,
- 'lpr' => LOG_LPR,
- 'mail' => LOG_MAIL,
- 'news' => LOG_NEWS,
- 'syslog' => LOG_SYSLOG,
- 'user' => LOG_USER,
- 'uucp' => LOG_UUCP,
- );
-
- /**
- * @param mixed $facility
- * @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($facility = LOG_USER, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
- $this->facilities['local0'] = LOG_LOCAL0;
- $this->facilities['local1'] = LOG_LOCAL1;
- $this->facilities['local2'] = LOG_LOCAL2;
- $this->facilities['local3'] = LOG_LOCAL3;
- $this->facilities['local4'] = LOG_LOCAL4;
- $this->facilities['local5'] = LOG_LOCAL5;
- $this->facilities['local6'] = LOG_LOCAL6;
- $this->facilities['local7'] = LOG_LOCAL7;
- }
-
- // convert textual description of facility to syslog constant
- if (array_key_exists(strtolower($facility), $this->facilities)) {
- $facility = $this->facilities[strtolower($facility)];
- } elseif (!in_array($facility, array_values($this->facilities), true)) {
- throw new \UnexpectedValueException('Unknown facility value "'.$facility.'" given');
- }
-
- $this->facility = $facility;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter('%channel%.%level_name%: %message% %context% %extra%');
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php
deleted file mode 100644
index a28ba02a..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?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\Logger;
-use Monolog\Formatter\JsonFormatter;
-use PhpAmqpLib\Message\AMQPMessage;
-use PhpAmqpLib\Channel\AMQPChannel;
-use AMQPExchange;
-
-class AmqpHandler extends AbstractProcessingHandler
-{
- /**
- * @var AMQPExchange|AMQPChannel $exchange
- */
- protected $exchange;
-
- /**
- * @var string
- */
- protected $exchangeName;
-
- /**
- * @param AMQPExchange|AMQPChannel $exchange AMQPExchange (php AMQP ext) or PHP AMQP lib channel, ready for use
- * @param string $exchangeName
- * @param int $level
- * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($exchange, $exchangeName = 'log', $level = Logger::DEBUG, $bubble = true)
- {
- if ($exchange instanceof AMQPExchange) {
- $exchange->setName($exchangeName);
- } elseif ($exchange instanceof AMQPChannel) {
- $this->exchangeName = $exchangeName;
- } else {
- throw new \InvalidArgumentException('PhpAmqpLib\Channel\AMQPChannel or AMQPExchange instance required');
- }
- $this->exchange = $exchange;
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- $data = $record["formatted"];
-
- $routingKey = sprintf(
- '%s.%s',
- // TODO 2.0 remove substr call
- substr($record['level_name'], 0, 4),
- $record['channel']
- );
-
- if ($this->exchange instanceof AMQPExchange) {
- $this->exchange->publish(
- $data,
- strtolower($routingKey),
- 0,
- array(
- 'delivery_mode' => 2,
- 'Content-type' => 'application/json'
- )
- );
- } else {
- $this->exchange->basic_publish(
- new AMQPMessage(
- (string) $data,
- array(
- 'delivery_mode' => 2,
- 'content_type' => 'application/json'
- )
- ),
- $this->exchangeName,
- strtolower($routingKey)
- );
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php
deleted file mode 100644
index 43190b92..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?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\LineFormatter;
-
-/**
- * Handler sending logs to browser's javascript console with no browser extension required
- *
- * @author Olivier Poitrey <rs@dailymotion.com>
- */
-class BrowserConsoleHandler extends AbstractProcessingHandler
-{
- protected static $initialized = false;
- protected static $records = array();
-
- /**
- * {@inheritDoc}
- *
- * Formatted output may contain some formatting markers to be transfered to `console.log` using the %c format.
- *
- * Example of formatted string:
- *
- * You can do [[blue text]]{color: blue} or [[green background]]{background-color: green; color: white}
- *
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter('[[%channel%]]{macro: autolabel} [[%level_name%]]{font-weight: bold} %message%');
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- // Accumulate records
- self::$records[] = $record;
-
- // Register shutdown handler if not already done
- if (PHP_SAPI !== 'cli' && !self::$initialized) {
- self::$initialized = true;
- register_shutdown_function(array('Monolog\Handler\BrowserConsoleHandler', 'send'));
- }
- }
-
- /**
- * Convert records to javascript console commands and send it to the browser.
- * This method is automatically called on PHP shutdown if output is HTML.
- */
- public static function send()
- {
- // Check content type
- foreach (headers_list() as $header) {
- if (stripos($header, 'content-type:') === 0) {
- if (stripos($header, 'text/html') === false) {
- // This handler only works with HTML outputs
- return;
- }
- break;
- }
- }
-
- if (count(self::$records)) {
- echo '<script>' . self::generateScript() . '</script>';
- self::reset();
- }
- }
-
- /**
- * Forget all logged records
- */
- public static function reset()
- {
- self::$records = array();
- }
-
- private static function generateScript()
- {
- $script = array();
- foreach (self::$records as $record) {
- $context = self::dump('Context', $record['context']);
- $extra = self::dump('Extra', $record['extra']);
-
- if (empty($context) && empty($extra)) {
- $script[] = self::call_array('log', self::handleStyles($record['formatted']));
- } else {
- $script = array_merge($script,
- array(self::call_array('groupCollapsed', self::handleStyles($record['formatted']))),
- $context,
- $extra,
- array(self::call('groupEnd'))
- );
- }
- }
-
- return "(function (c) {if (c && c.groupCollapsed) {\n" . implode("\n", $script) . "\n}})(console);";
- }
-
- private static function handleStyles($formatted)
- {
- $args = array(self::quote('font-weight: normal'));
- $format = '%c' . $formatted;
- preg_match_all('/\[\[(.*?)\]\]\{([^}]*)\}/s', $format, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
-
- foreach (array_reverse($matches) as $match) {
- $args[] = self::quote(self::handleCustomStyles($match[2][0], $match[1][0]));
- $args[] = '"font-weight: normal"';
-
- $pos = $match[0][1];
- $format = substr($format, 0, $pos) . '%c' . $match[1][0] . '%c' . substr($format, $pos + strlen($match[0][0]));
- }
-
- array_unshift($args, self::quote($format));
-
- return $args;
- }
-
- private static function handleCustomStyles($style, $string)
- {
- static $colors = array('blue', 'green', 'red', 'magenta', 'orange', 'black', 'grey');
- static $labels = array();
-
- return preg_replace_callback('/macro\s*:(.*?)(?:;|$)/', function ($m) use ($string, &$colors, &$labels) {
- if (trim($m[1]) === 'autolabel') {
- // Format the string as a label with consistent auto assigned background color
- if (!isset($labels[$string])) {
- $labels[$string] = $colors[count($labels) % count($colors)];
- }
- $color = $labels[$string];
-
- return "background-color: $color; color: white; border-radius: 3px; padding: 0 2px 0 2px";
- }
-
- return $m[1];
- }, $style);
- }
-
- private static function dump($title, array $dict)
- {
- $script = array();
- $dict = array_filter($dict);
- if (empty($dict)) {
- return $script;
- }
- $script[] = self::call('log', self::quote('%c%s'), self::quote('font-weight: bold'), self::quote($title));
- foreach ($dict as $key => $value) {
- $value = json_encode($value);
- if (empty($value)) {
- $value = self::quote('');
- }
- $script[] = self::call('log', self::quote('%s: %o'), self::quote($key), $value);
- }
-
- return $script;
- }
-
- private static function quote($arg)
- {
- return '"' . addcslashes($arg, "\"\n") . '"';
- }
-
- private static function call()
- {
- $args = func_get_args();
- $method = array_shift($args);
-
- return self::call_array($method, $args);
- }
-
- private static function call_array($method, array $args)
- {
- return 'c.' . $method . '(' . implode(', ', $args) . ');';
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php
deleted file mode 100644
index 6d8136f7..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?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\Logger;
-
-/**
- * Buffers all records until closing the handler and then pass them as batch.
- *
- * This is useful for a MailHandler to send only one mail per request instead of
- * sending one per log message.
- *
- * @author Christophe Coevoet <stof@notk.org>
- */
-class BufferHandler extends AbstractHandler
-{
- protected $handler;
- protected $bufferSize = 0;
- protected $bufferLimit;
- protected $flushOnOverflow;
- protected $buffer = array();
- protected $initialized = false;
-
- /**
- * @param HandlerInterface $handler Handler.
- * @param integer $bufferLimit How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
- * @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
- * @param Boolean $flushOnOverflow If true, the buffer is flushed when the max size has been reached, by default oldest entries are discarded
- */
- public function __construct(HandlerInterface $handler, $bufferLimit = 0, $level = Logger::DEBUG, $bubble = true, $flushOnOverflow = false)
- {
- parent::__construct($level, $bubble);
- $this->handler = $handler;
- $this->bufferLimit = (int) $bufferLimit;
- $this->flushOnOverflow = $flushOnOverflow;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($record['level'] < $this->level) {
- return false;
- }
-
- if (!$this->initialized) {
- // __destructor() doesn't get called on Fatal errors
- register_shutdown_function(array($this, 'close'));
- $this->initialized = true;
- }
-
- if ($this->bufferLimit > 0 && $this->bufferSize === $this->bufferLimit) {
- if ($this->flushOnOverflow) {
- $this->flush();
- } else {
- array_shift($this->buffer);
- $this->bufferSize--;
- }
- }
-
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- $this->buffer[] = $record;
- $this->bufferSize++;
-
- return false === $this->bubble;
- }
-
- public function flush()
- {
- if ($this->bufferSize === 0) {
- return;
- }
-
- $this->handler->handleBatch($this->buffer);
- $this->clear();
- }
-
- public function __destruct()
- {
- // suppress the parent behavior since we already have register_shutdown_function()
- // to call close(), and the reference contained there will prevent this from being
- // GC'd until the end of the request
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- $this->flush();
- }
-
- /**
- * Clears the buffer without flushing any messages down to the wrapped handler.
- */
- public function clear()
- {
- $this->bufferSize = 0;
- $this->buffer = array();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php
deleted file mode 100644
index bc659349..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php
+++ /dev/null
@@ -1,204 +0,0 @@
-<?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\ChromePHPFormatter;
-use Monolog\Logger;
-
-/**
- * Handler sending logs to the ChromePHP extension (http://www.chromephp.com/)
- *
- * @author Christophe Coevoet <stof@notk.org>
- */
-class ChromePHPHandler extends AbstractProcessingHandler
-{
- /**
- * Version of the extension
- */
- const VERSION = '4.0';
-
- /**
- * Header name
- */
- const HEADER_NAME = 'X-ChromeLogger-Data';
-
- protected static $initialized = false;
-
- /**
- * Tracks whether we sent too much data
- *
- * Chrome limits the headers to 256KB, so when we sent 240KB we stop sending
- *
- * @var Boolean
- */
- protected static $overflowed = false;
-
- protected static $json = array(
- 'version' => self::VERSION,
- 'columns' => array('label', 'log', 'backtrace', 'type'),
- 'rows' => array(),
- );
-
- protected static $sendHeaders = true;
-
- /**
- * @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($level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
- if (!function_exists('json_encode')) {
- throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s ChromePHPHandler');
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- $messages = array();
-
- foreach ($records as $record) {
- if ($record['level'] < $this->level) {
- continue;
- }
- $messages[] = $this->processRecord($record);
- }
-
- if (!empty($messages)) {
- $messages = $this->getFormatter()->formatBatch($messages);
- self::$json['rows'] = array_merge(self::$json['rows'], $messages);
- $this->send();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new ChromePHPFormatter();
- }
-
- /**
- * Creates & sends header for a record
- *
- * @see sendHeader()
- * @see send()
- * @param array $record
- */
- protected function write(array $record)
- {
- self::$json['rows'][] = $record['formatted'];
-
- $this->send();
- }
-
- /**
- * Sends the log header
- *
- * @see sendHeader()
- */
- protected function send()
- {
- if (self::$overflowed || !self::$sendHeaders) {
- return;
- }
-
- if (!self::$initialized) {
- self::$initialized = true;
-
- self::$sendHeaders = $this->headersAccepted();
- if (!self::$sendHeaders) {
- return;
- }
-
- self::$json['request_uri'] = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
- }
-
- $json = @json_encode(self::$json);
- $data = base64_encode(utf8_encode($json));
- if (strlen($data) > 240*1024) {
- self::$overflowed = true;
-
- $record = array(
- 'message' => 'Incomplete logs, chrome header size limit reached',
- 'context' => array(),
- 'level' => Logger::WARNING,
- 'level_name' => Logger::getLevelName(Logger::WARNING),
- 'channel' => 'monolog',
- 'datetime' => new \DateTime(),
- 'extra' => array(),
- );
- self::$json['rows'][count(self::$json['rows']) - 1] = $this->getFormatter()->format($record);
- $json = @json_encode(self::$json);
- $data = base64_encode(utf8_encode($json));
- }
-
- if (trim($data) !== '') {
- $this->sendHeader(self::HEADER_NAME, $data);
- }
- }
-
- /**
- * Send header string to the client
- *
- * @param string $header
- * @param string $content
- */
- protected function sendHeader($header, $content)
- {
- if (!headers_sent() && self::$sendHeaders) {
- header(sprintf('%s: %s', $header, $content));
- }
- }
-
- /**
- * Verifies if the headers are accepted by the current user agent
- *
- * @return Boolean
- */
- protected function headersAccepted()
- {
- if (empty($_SERVER['HTTP_USER_AGENT'])) {
- return false;
- }
-
- return preg_match('{\bChrome/\d+[\.\d+]*\b}', $_SERVER['HTTP_USER_AGENT']);
- }
-
- /**
- * BC getter for the sendHeaders property that has been made static
- */
- public function __get($property)
- {
- if ('sendHeaders' !== $property) {
- throw new \InvalidArgumentException('Undefined property '.$property);
- }
-
- return static::$sendHeaders;
- }
-
- /**
- * BC setter for the sendHeaders property that has been made static
- */
- public function __set($property, $value)
- {
- if ('sendHeaders' !== $property) {
- throw new \InvalidArgumentException('Undefined property '.$property);
- }
-
- static::$sendHeaders = $value;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php
deleted file mode 100644
index b3687c3d..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?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\JsonFormatter;
-use Monolog\Logger;
-
-/**
- * CouchDB handler
- *
- * @author Markus Bachmann <markus.bachmann@bachi.biz>
- */
-class CouchDBHandler extends AbstractProcessingHandler
-{
- private $options;
-
- public function __construct(array $options = array(), $level = Logger::DEBUG, $bubble = true)
- {
- $this->options = array_merge(array(
- 'host' => 'localhost',
- 'port' => 5984,
- 'dbname' => 'logger',
- 'username' => null,
- 'password' => null,
- ), $options);
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- $basicAuth = null;
- if ($this->options['username']) {
- $basicAuth = sprintf('%s:%s@', $this->options['username'], $this->options['password']);
- }
-
- $url = 'http://'.$basicAuth.$this->options['host'].':'.$this->options['port'].'/'.$this->options['dbname'];
- $context = stream_context_create(array(
- 'http' => array(
- 'method' => 'POST',
- 'content' => $record['formatted'],
- 'ignore_errors' => true,
- 'max_redirects' => 0,
- 'header' => 'Content-type: application/json',
- )
- ));
-
- if (false === @file_get_contents($url, null, $context)) {
- throw new \RuntimeException(sprintf('Could not connect to %s', $url));
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php
deleted file mode 100644
index d968720c..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?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\Logger;
-
-/**
- * Logs to Cube.
- *
- * @link http://square.github.com/cube/
- * @author Wan Chen <kami@kamisama.me>
- */
-class CubeHandler extends AbstractProcessingHandler
-{
- private $udpConnection = null;
- private $httpConnection = null;
- private $scheme = null;
- private $host = null;
- private $port = null;
- private $acceptedSchemes = array('http', 'udp');
-
- /**
- * Create a Cube handler
- *
- * @throws UnexpectedValueException when given url is not a valid url.
- * A valid url must consists of three parts : protocol://host:port
- * Only valid protocol used by Cube are http and udp
- */
- public function __construct($url, $level = Logger::DEBUG, $bubble = true)
- {
- $urlInfos = parse_url($url);
-
- if (!isset($urlInfos['scheme']) || !isset($urlInfos['host']) || !isset($urlInfos['port'])) {
- throw new \UnexpectedValueException('URL "'.$url.'" is not valid');
- }
-
- if (!in_array($urlInfos['scheme'], $this->acceptedSchemes)) {
- throw new \UnexpectedValueException(
- 'Invalid protocol (' . $urlInfos['scheme'] . ').'
- . ' Valid options are ' . implode(', ', $this->acceptedSchemes));
- }
-
- $this->scheme = $urlInfos['scheme'];
- $this->host = $urlInfos['host'];
- $this->port = $urlInfos['port'];
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * Establish a connection to an UDP socket
- *
- * @throws LogicException when unable to connect to the socket
- */
- protected function connectUdp()
- {
- if (!extension_loaded('sockets')) {
- throw new MissingExtensionException('The sockets extension is required to use udp URLs with the CubeHandler');
- }
-
- $this->udpConnection = socket_create(AF_INET, SOCK_DGRAM, 0);
- if (!$this->udpConnection) {
- throw new \LogicException('Unable to create a socket');
- }
-
- if (!socket_connect($this->udpConnection, $this->host, $this->port)) {
- throw new \LogicException('Unable to connect to the socket at ' . $this->host . ':' . $this->port);
- }
- }
-
- /**
- * Establish a connection to a http server
- */
- protected function connectHttp()
- {
- if (!extension_loaded('curl')) {
- throw new \LogicException('The curl extension is needed to use http URLs with the CubeHandler');
- }
-
- $this->httpConnection = curl_init('http://'.$this->host.':'.$this->port.'/1.0/event/put');
-
- if (!$this->httpConnection) {
- throw new \LogicException('Unable to connect to ' . $this->host . ':' . $this->port);
- }
-
- curl_setopt($this->httpConnection, CURLOPT_CUSTOMREQUEST, "POST");
- curl_setopt($this->httpConnection, CURLOPT_RETURNTRANSFER, true);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $date = $record['datetime'];
-
- $data = array('time' => $date->format('Y-m-d\TH:i:s.uO'));
- unset($record['datetime']);
-
- if (isset($record['context']['type'])) {
- $data['type'] = $record['context']['type'];
- unset($record['context']['type']);
- } else {
- $data['type'] = $record['channel'];
- }
-
- $data['data'] = $record['context'];
- $data['data']['level'] = $record['level'];
-
- $this->{'write'.$this->scheme}(json_encode($data));
- }
-
- private function writeUdp($data)
- {
- if (!$this->udpConnection) {
- $this->connectUdp();
- }
-
- socket_send($this->udpConnection, $data, strlen($data), 0);
- }
-
- private function writeHttp($data)
- {
- if (!$this->httpConnection) {
- $this->connectHttp();
- }
-
- curl_setopt($this->httpConnection, CURLOPT_POSTFIELDS, '['.$data.']');
- curl_setopt($this->httpConnection, CURLOPT_HTTPHEADER, array(
- 'Content-Type: application/json',
- 'Content-Length: ' . strlen('['.$data.']'))
- );
-
- return curl_exec($this->httpConnection);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php
deleted file mode 100644
index b91ffec9..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\Logger;
-use Monolog\Formatter\NormalizerFormatter;
-use Doctrine\CouchDB\CouchDBClient;
-
-/**
- * CouchDB handler for Doctrine CouchDB ODM
- *
- * @author Markus Bachmann <markus.bachmann@bachi.biz>
- */
-class DoctrineCouchDBHandler extends AbstractProcessingHandler
-{
- private $client;
-
- public function __construct(CouchDBClient $client, $level = Logger::DEBUG, $bubble = true)
- {
- $this->client = $client;
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- $this->client->postDocument($record['formatted']);
- }
-
- protected function getDefaultFormatter()
- {
- return new NormalizerFormatter;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php
deleted file mode 100644
index e7f843c8..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?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 Aws\Common\Aws;
-use Aws\DynamoDb\DynamoDbClient;
-use Monolog\Formatter\ScalarFormatter;
-use Monolog\Logger;
-
-/**
- * Amazon DynamoDB handler (http://aws.amazon.com/dynamodb/)
- *
- * @link https://github.com/aws/aws-sdk-php/
- * @author Andrew Lawson <adlawson@gmail.com>
- */
-class DynamoDbHandler extends AbstractProcessingHandler
-{
- const DATE_FORMAT = 'Y-m-d\TH:i:s.uO';
-
- /**
- * @var DynamoDbClient
- */
- protected $client;
-
- /**
- * @var string
- */
- protected $table;
-
- /**
- * @param DynamoDbClient $client
- * @param string $table
- * @param integer $level
- * @param boolean $bubble
- */
- public function __construct(DynamoDbClient $client, $table, $level = Logger::DEBUG, $bubble = true)
- {
- if (!defined('Aws\Common\Aws::VERSION') || version_compare('3.0', Aws::VERSION, '<=')) {
- throw new \RuntimeException('The DynamoDbHandler is only known to work with the AWS SDK 2.x releases');
- }
-
- $this->client = $client;
- $this->table = $table;
-
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $filtered = $this->filterEmptyFields($record['formatted']);
- $formatted = $this->client->formatAttributes($filtered);
-
- $this->client->putItem(array(
- 'TableName' => $this->table,
- 'Item' => $formatted
- ));
- }
-
- /**
- * @param array $record
- * @return array
- */
- protected function filterEmptyFields(array $record)
- {
- return array_filter($record, function ($value) {
- return !empty($value) || false === $value || 0 === $value;
- });
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getDefaultFormatter()
- {
- return new ScalarFormatter(self::DATE_FORMAT);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php
deleted file mode 100644
index 96e5d57f..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?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 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(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);
- }
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php
deleted file mode 100644
index d1e1ee60..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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\LineFormatter;
-use Monolog\Logger;
-
-/**
- * Stores to PHP error_log() handler.
- *
- * @author Elan Ruusamäe <glen@delfi.ee>
- */
-class ErrorLogHandler extends AbstractProcessingHandler
-{
- const OPERATING_SYSTEM = 0;
- const SAPI = 4;
-
- protected $messageType;
- protected $expandNewlines;
-
- /**
- * @param integer $messageType Says where the error should go.
- * @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
- * @param Boolean $expandNewlines If set to true, newlines in the message will be expanded to be take multiple log entries
- */
- public function __construct($messageType = self::OPERATING_SYSTEM, $level = Logger::DEBUG, $bubble = true, $expandNewlines = false)
- {
- parent::__construct($level, $bubble);
-
- if (false === in_array($messageType, self::getAvailableTypes())) {
- $message = sprintf('The given message type "%s" is not supported', print_r($messageType, true));
- throw new \InvalidArgumentException($message);
- }
-
- $this->messageType = $messageType;
- $this->expandNewlines = $expandNewlines;
- }
-
- /**
- * @return array With all available types
- */
- public static function getAvailableTypes()
- {
- return array(
- self::OPERATING_SYSTEM,
- self::SAPI,
- );
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter('[%datetime%] %channel%.%level_name%: %message% %context% %extra%');
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- if ($this->expandNewlines) {
- $lines = preg_split('{[\r\n]+}', (string) $record['formatted']);
- foreach ($lines as $line) {
- error_log($line, $this->messageType);
- }
- } else {
- error_log((string) $record['formatted'], $this->messageType);
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php
deleted file mode 100644
index dad82273..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?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\Logger;
-
-/**
- * Simple handler wrapper that filters records based on a list of levels
- *
- * It can be configured with an exact list of levels to allow, or a min/max level.
- *
- * @author Hennadiy Verkh
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class FilterHandler extends AbstractHandler
-{
- /**
- * Handler or factory callable($record, $this)
- *
- * @var callable|\Monolog\Handler\HandlerInterface
- */
- protected $handler;
-
- /**
- * Minimum level for logs that are passes to handler
- *
- * @var int[]
- */
- protected $acceptedLevels;
-
- /**
- * Whether the messages that are handled can bubble up the stack or not
- *
- * @var Boolean
- */
- protected $bubble;
-
- /**
- * @param callable|HandlerInterface $handler Handler or factory callable($record, $this).
- * @param int|array $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided
- * @param int $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array
- * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct($handler, $minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true)
- {
- $this->handler = $handler;
- $this->bubble = $bubble;
- $this->setAcceptedLevels($minLevelOrList, $maxLevel);
-
- if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
- throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
- }
- }
-
- /**
- * @return array
- */
- public function getAcceptedLevels()
- {
- return array_flip($this->acceptedLevels);
- }
-
- /**
- * @param int|array $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided
- * @param int $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array
- */
- public function setAcceptedLevels($minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY)
- {
- if (is_array($minLevelOrList)) {
- $acceptedLevels = array_map('Monolog\Logger::toMonologLevel', $minLevelOrList);
- } else {
- $minLevelOrList = Logger::toMonologLevel($minLevelOrList);
- $maxLevel = Logger::toMonologLevel($maxLevel);
- $acceptedLevels = array_values(array_filter(Logger::getLevels(), function ($level) use ($minLevelOrList, $maxLevel) {
- return $level >= $minLevelOrList && $level <= $maxLevel;
- }));
- }
- $this->acceptedLevels = array_flip($acceptedLevels);
- }
-
- /**
- * {@inheritdoc}
- */
- public function isHandling(array $record)
- {
- return isset($this->acceptedLevels[$record['level']]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if (!$this->isHandling($record)) {
- return false;
- }
-
- // The same logic as in FingersCrossedHandler
- if (!$this->handler instanceof HandlerInterface) {
- $this->handler = call_user_func($this->handler, $record, $this);
- if (!$this->handler instanceof HandlerInterface) {
- throw new \RuntimeException("The factory callable should return a HandlerInterface");
- }
- }
-
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- $this->handler->handle($record);
-
- return false === $this->bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- $filtered = array();
- foreach ($records as $record) {
- if ($this->isHandling($record)) {
- $filtered[] = $record;
- }
- }
-
- $this->handler->handleBatch($filtered);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php
deleted file mode 100644
index c3e42efe..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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\FingersCrossed;
-
-/**
- * Interface for activation strategies for the FingersCrossedHandler.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-interface ActivationStrategyInterface
-{
- /**
- * Returns whether the given record activates the handler.
- *
- * @param array $record
- * @return Boolean
- */
- public function isHandlerActivated(array $record);
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php
deleted file mode 100644
index e3b403f6..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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\FingersCrossed;
-
-use Monolog\Logger;
-
-/**
- * Channel and Error level based monolog activation strategy. Allows to trigger activation
- * based on level per channel. e.g. trigger activation on level 'ERROR' by default, except
- * for records of the 'sql' channel; those should trigger activation on level 'WARN'.
- *
- * Example:
- *
- * <code>
- * $activationStrategy = new ChannelLevelActivationStrategy(
- * Logger::CRITICAL,
- * array(
- * 'request' => Logger::ALERT,
- * 'sensitive' => Logger::ERROR,
- * )
- * );
- * $handler = new FingersCrossedHandler(new StreamHandler('php://stderr'), $activationStrategy);
- * </code>
- *
- * @author Mike Meessen <netmikey@gmail.com>
- */
-class ChannelLevelActivationStrategy implements ActivationStrategyInterface
-{
- private $defaultActionLevel;
- private $channelToActionLevel;
-
- /**
- * @param int $defaultActionLevel The default action level to be used if the record's category doesn't match any
- * @param array $channelToActionLevel An array that maps channel names to action levels.
- */
- public function __construct($defaultActionLevel, $channelToActionLevel = array())
- {
- $this->defaultActionLevel = Logger::toMonologLevel($defaultActionLevel);
- $this->channelToActionLevel = array_map('Monolog\Logger::toMonologLevel', $channelToActionLevel);
- }
-
- public function isHandlerActivated(array $record)
- {
- if (isset($this->channelToActionLevel[$record['channel']])) {
- return $record['level'] >= $this->channelToActionLevel[$record['channel']];
- }
-
- return $record['level'] >= $this->defaultActionLevel;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php
deleted file mode 100644
index 6e630852..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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\FingersCrossed;
-
-use Monolog\Logger;
-
-/**
- * Error level based activation strategy.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ErrorLevelActivationStrategy implements ActivationStrategyInterface
-{
- private $actionLevel;
-
- public function __construct($actionLevel)
- {
- $this->actionLevel = Logger::toMonologLevel($actionLevel);
- }
-
- public function isHandlerActivated(array $record)
- {
- return $record['level'] >= $this->actionLevel;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php
deleted file mode 100644
index a81c9e64..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?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\Handler\FingersCrossed\ErrorLevelActivationStrategy;
-use Monolog\Handler\FingersCrossed\ActivationStrategyInterface;
-use Monolog\Logger;
-
-/**
- * Buffers all records until a certain level is reached
- *
- * The advantage of this approach is that you don't get any clutter in your log files.
- * Only requests which actually trigger an error (or whatever your actionLevel is) will be
- * in the logs, but they will contain all records, not only those above the level threshold.
- *
- * You can find the various activation strategies in the
- * Monolog\Handler\FingersCrossed\ namespace.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class FingersCrossedHandler extends AbstractHandler
-{
- protected $handler;
- protected $activationStrategy;
- protected $buffering = true;
- protected $bufferSize;
- protected $buffer = array();
- protected $stopBuffering;
- protected $passthruLevel;
-
- /**
- * @param callable|HandlerInterface $handler Handler or factory callable($record, $fingersCrossedHandler).
- * @param int|ActivationStrategyInterface $activationStrategy Strategy which determines when this handler takes action
- * @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
- * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
- * @param Boolean $stopBuffering Whether the handler should stop buffering after being triggered (default true)
- * @param int $passthruLevel Minimum level to always flush to handler on close, even if strategy not triggered
- */
- public function __construct($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true, $passthruLevel = null)
- {
- if (null === $activationStrategy) {
- $activationStrategy = new ErrorLevelActivationStrategy(Logger::WARNING);
- }
-
- // convert simple int activationStrategy to an object
- if (!$activationStrategy instanceof ActivationStrategyInterface) {
- $activationStrategy = new ErrorLevelActivationStrategy($activationStrategy);
- }
-
- $this->handler = $handler;
- $this->activationStrategy = $activationStrategy;
- $this->bufferSize = $bufferSize;
- $this->bubble = $bubble;
- $this->stopBuffering = $stopBuffering;
- $this->passthruLevel = $passthruLevel;
-
- if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
- throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function isHandling(array $record)
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- if ($this->buffering) {
- $this->buffer[] = $record;
- if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) {
- array_shift($this->buffer);
- }
- if ($this->activationStrategy->isHandlerActivated($record)) {
- if ($this->stopBuffering) {
- $this->buffering = false;
- }
- if (!$this->handler instanceof HandlerInterface) {
- $this->handler = call_user_func($this->handler, $record, $this);
- if (!$this->handler instanceof HandlerInterface) {
- throw new \RuntimeException("The factory callable should return a HandlerInterface");
- }
- }
- $this->handler->handleBatch($this->buffer);
- $this->buffer = array();
- }
- } else {
- $this->handler->handle($record);
- }
-
- return false === $this->bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- if (null !== $this->passthruLevel) {
- $level = $this->passthruLevel;
- $this->buffer = array_filter($this->buffer, function ($record) use ($level) {
- return $record['level'] >= $level;
- });
- if (count($this->buffer) > 0) {
- $this->handler->handleBatch($this->buffer);
- $this->buffer = array();
- }
- }
- }
-
- /**
- * Resets the state of the handler. Stops forwarding records to the wrapped handler.
- */
- public function reset()
- {
- $this->buffering = true;
- }
-
- /**
- * Clears the buffer without flushing any messages down to the wrapped handler.
- *
- * It also resets the handler to its initial buffering state.
- */
- public function clear()
- {
- $this->buffer = array();
- $this->reset();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php
deleted file mode 100644
index fee47950..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?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\WildfireFormatter;
-
-/**
- * Simple FirePHP Handler (http://www.firephp.org/), which uses the Wildfire protocol.
- *
- * @author Eric Clemmons (@ericclemmons) <eric@uxdriven.com>
- */
-class FirePHPHandler extends AbstractProcessingHandler
-{
- /**
- * WildFire JSON header message format
- */
- const PROTOCOL_URI = 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2';
-
- /**
- * FirePHP structure for parsing messages & their presentation
- */
- const STRUCTURE_URI = 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1';
-
- /**
- * Must reference a "known" plugin, otherwise headers won't display in FirePHP
- */
- const PLUGIN_URI = 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3';
-
- /**
- * Header prefix for Wildfire to recognize & parse headers
- */
- const HEADER_PREFIX = 'X-Wf';
-
- /**
- * Whether or not Wildfire vendor-specific headers have been generated & sent yet
- */
- protected static $initialized = false;
-
- /**
- * Shared static message index between potentially multiple handlers
- * @var int
- */
- protected static $messageIndex = 1;
-
- protected static $sendHeaders = true;
-
- /**
- * Base header creation function used by init headers & record headers
- *
- * @param array $meta Wildfire Plugin, Protocol & Structure Indexes
- * @param string $message Log message
- * @return array Complete header string ready for the client as key and message as value
- */
- protected function createHeader(array $meta, $message)
- {
- $header = sprintf('%s-%s', self::HEADER_PREFIX, join('-', $meta));
-
- return array($header => $message);
- }
-
- /**
- * Creates message header from record
- *
- * @see createHeader()
- * @param array $record
- * @return string
- */
- protected function createRecordHeader(array $record)
- {
- // Wildfire is extensible to support multiple protocols & plugins in a single request,
- // but we're not taking advantage of that (yet), so we're using "1" for simplicity's sake.
- return $this->createHeader(
- array(1, 1, 1, self::$messageIndex++),
- $record['formatted']
- );
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new WildfireFormatter();
- }
-
- /**
- * Wildfire initialization headers to enable message parsing
- *
- * @see createHeader()
- * @see sendHeader()
- * @return array
- */
- protected function getInitHeaders()
- {
- // Initial payload consists of required headers for Wildfire
- return array_merge(
- $this->createHeader(array('Protocol', 1), self::PROTOCOL_URI),
- $this->createHeader(array(1, 'Structure', 1), self::STRUCTURE_URI),
- $this->createHeader(array(1, 'Plugin', 1), self::PLUGIN_URI)
- );
- }
-
- /**
- * Send header string to the client
- *
- * @param string $header
- * @param string $content
- */
- protected function sendHeader($header, $content)
- {
- if (!headers_sent() && self::$sendHeaders) {
- header(sprintf('%s: %s', $header, $content));
- }
- }
-
- /**
- * Creates & sends header for a record, ensuring init headers have been sent prior
- *
- * @see sendHeader()
- * @see sendInitHeaders()
- * @param array $record
- */
- protected function write(array $record)
- {
- if (!self::$sendHeaders) {
- return;
- }
-
- // WildFire-specific headers must be sent prior to any messages
- if (!self::$initialized) {
- self::$initialized = true;
-
- self::$sendHeaders = $this->headersAccepted();
- if (!self::$sendHeaders) {
- return;
- }
-
- foreach ($this->getInitHeaders() as $header => $content) {
- $this->sendHeader($header, $content);
- }
- }
-
- $header = $this->createRecordHeader($record);
- if (trim(current($header)) !== '') {
- $this->sendHeader(key($header), current($header));
- }
- }
-
- /**
- * Verifies if the headers are accepted by the current user agent
- *
- * @return Boolean
- */
- protected function headersAccepted()
- {
- if (!empty($_SERVER['HTTP_USER_AGENT']) && preg_match('{\bFirePHP/\d+\.\d+\b}', $_SERVER['HTTP_USER_AGENT'])) {
- return true;
- }
-
- return isset($_SERVER['HTTP_X_FIREPHP_VERSION']);
- }
-
- /**
- * BC getter for the sendHeaders property that has been made static
- */
- public function __get($property)
- {
- if ('sendHeaders' !== $property) {
- throw new \InvalidArgumentException('Undefined property '.$property);
- }
-
- return static::$sendHeaders;
- }
-
- /**
- * BC setter for the sendHeaders property that has been made static
- */
- public function __set($property, $value)
- {
- if ('sendHeaders' !== $property) {
- throw new \InvalidArgumentException('Undefined property '.$property);
- }
-
- static::$sendHeaders = $value;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php
deleted file mode 100644
index 388692c4..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?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\LineFormatter;
-use Monolog\Logger;
-
-/**
- * Sends logs to Fleep.io using Webhook integrations
- *
- * You'll need a Fleep.io account to use this handler.
- *
- * @see https://fleep.io/integrations/webhooks/ Fleep Webhooks Documentation
- * @author Ando Roots <ando@sqroot.eu>
- */
-class FleepHookHandler extends SocketHandler
-{
- const FLEEP_HOST = 'fleep.io';
-
- const FLEEP_HOOK_URI = '/hook/';
-
- /**
- * @var string Webhook token (specifies the conversation where logs are sent)
- */
- protected $token;
-
- /**
- * Construct a new Fleep.io Handler.
- *
- * For instructions on how to create a new web hook in your conversations
- * see https://fleep.io/integrations/webhooks/
- *
- * @param string $token Webhook token
- * @param bool|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
- * @throws MissingExtensionException
- */
- public function __construct($token, $level = Logger::DEBUG, $bubble = true)
- {
- if (!extension_loaded('openssl')) {
- throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FleepHookHandler');
- }
-
- $this->token = $token;
-
- $connectionString = 'ssl://' . self::FLEEP_HOST . ':443';
- parent::__construct($connectionString, $level, $bubble);
- }
-
- /**
- * Returns the default formatter to use with this handler
- *
- * Overloaded to remove empty context and extra arrays from the end of the log message.
- *
- * @return LineFormatter
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter(null, null, true, true);
- }
-
- /**
- * Handles a log record
- *
- * @param array $record
- */
- public function write(array $record)
- {
- parent::write($record);
- $this->closeSocket();
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- /**
- * Builds the header of the API Call
- *
- * @param string $content
- * @return string
- */
- private function buildHeader($content)
- {
- $header = "POST " . self::FLEEP_HOOK_URI . $this->token . " HTTP/1.1\r\n";
- $header .= "Host: " . self::FLEEP_HOST . "\r\n";
- $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-
- /**
- * Builds the body of API call
- *
- * @param array $record
- * @return string
- */
- private function buildContent($record)
- {
- $dataArray = array(
- 'message' => $record['formatted']
- );
-
- return http_build_query($dataArray);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php
deleted file mode 100644
index 6eaaa9d4..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?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\Logger;
-
-/**
- * Sends notifications through the Flowdock push API
- *
- * This must be configured with a FlowdockFormatter instance via setFormatter()
- *
- * Notes:
- * API token - Flowdock API token
- *
- * @author Dominik Liebler <liebler.dominik@gmail.com>
- * @see https://www.flowdock.com/api/push
- */
-class FlowdockHandler extends SocketHandler
-{
- /**
- * @var string
- */
- protected $apiToken;
-
- /**
- * @param string $apiToken
- * @param bool|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
- *
- * @throws MissingExtensionException if OpenSSL is missing
- */
- public function __construct($apiToken, $level = Logger::DEBUG, $bubble = true)
- {
- if (!extension_loaded('openssl')) {
- throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FlowdockHandler');
- }
-
- parent::__construct('ssl://api.flowdock.com:443', $level, $bubble);
- $this->apiToken = $apiToken;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- */
- protected function write(array $record)
- {
- parent::write($record);
-
- $this->closeSocket();
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- /**
- * Builds the body of API call
- *
- * @param array $record
- * @return string
- */
- private function buildContent($record)
- {
- return json_encode($record['formatted']['flowdock']);
- }
-
- /**
- * Builds the header of the API Call
- *
- * @param string $content
- * @return string
- */
- private function buildHeader($content)
- {
- $header = "POST /v1/messages/team_inbox/" . $this->apiToken . " HTTP/1.1\r\n";
- $header .= "Host: api.flowdock.com\r\n";
- $header .= "Content-Type: application/json\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php
deleted file mode 100644
index 790f6364..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?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 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 a publisher object
- * @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($publisher, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- if (!$publisher instanceof IMessagePublisher && !$publisher instanceof PublisherInterface) {
- throw new InvalidArgumentException("Invalid publisher, expected a 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();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php
deleted file mode 100644
index 99384d35..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?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;
-
-/**
- * Forwards records to multiple handlers
- *
- * @author Lenar Lõhmus <lenar@city.ee>
- */
-class GroupHandler extends AbstractHandler
-{
- protected $handlers;
-
- /**
- * @param array $handlers Array of Handlers.
- * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
- */
- public function __construct(array $handlers, $bubble = true)
- {
- foreach ($handlers as $handler) {
- if (!$handler instanceof HandlerInterface) {
- throw new \InvalidArgumentException('The first argument of the GroupHandler must be an array of HandlerInterface instances.');
- }
- }
-
- $this->handlers = $handlers;
- $this->bubble = $bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function isHandling(array $record)
- {
- foreach ($this->handlers as $handler) {
- if ($handler->isHandling($record)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- foreach ($this->handlers as $handler) {
- $handler->handle($record);
- }
-
- return false === $this->bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- foreach ($this->handlers as $handler) {
- $handler->handleBatch($records);
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php
deleted file mode 100644
index d920c4ba..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?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;
-
-/**
- * Interface that all Monolog Handlers must implement
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface HandlerInterface
-{
- /**
- * Checks whether the given record will be handled by this handler.
- *
- * This is mostly done for performance reasons, to avoid calling processors for nothing.
- *
- * Handlers should still check the record levels within handle(), returning false in isHandling()
- * is no guarantee that handle() will not be called, and isHandling() might not be called
- * for a given record.
- *
- * @param array $record Partial log record containing only a level key
- *
- * @return Boolean
- */
- public function isHandling(array $record);
-
- /**
- * Handles a record.
- *
- * All records may be passed to this method, and the handler should discard
- * those that it does not want to handle.
- *
- * The return value of this function controls the bubbling process of the handler stack.
- * Unless the bubbling is interrupted (by returning true), the Logger class will keep on
- * calling further handlers in the stack with a given log record.
- *
- * @param array $record The record to handle
- * @return Boolean true means that this handler handled the record, and that bubbling is not permitted.
- * false means the record was either not processed or that this handler allows bubbling.
- */
- public function handle(array $record);
-
- /**
- * Handles a set of records at once.
- *
- * @param array $records The records to handle (an array of record arrays)
- */
- public function handleBatch(array $records);
-
- /**
- * Adds a processor in the stack.
- *
- * @param callable $callback
- * @return self
- */
- public function pushProcessor($callback);
-
- /**
- * Removes the processor on top of the stack and returns it.
- *
- * @return callable
- */
- public function popProcessor();
-
- /**
- * Sets the formatter.
- *
- * @param FormatterInterface $formatter
- * @return self
- */
- public function setFormatter(FormatterInterface $formatter);
-
- /**
- * Gets the formatter.
- *
- * @return FormatterInterface
- */
- public function getFormatter();
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php
deleted file mode 100644
index 29614d31..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php
+++ /dev/null
@@ -1,300 +0,0 @@
-<?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\Logger;
-
-/**
- * Sends notifications through the hipchat api to a hipchat room
- *
- * Notes:
- * API token - HipChat API token
- * Room - HipChat Room Id or name, where messages are sent
- * Name - Name used to send the message (from)
- * notify - Should the message trigger a notification in the clients
- *
- * @author Rafael Dohms <rafael@doh.ms>
- * @see https://www.hipchat.com/docs/api
- */
-class HipChatHandler extends SocketHandler
-{
- /**
- * The maximum allowed length for the name used in the "from" field.
- */
- const MAXIMUM_NAME_LENGTH = 15;
-
- /**
- * The maximum allowed length for the message.
- */
- const MAXIMUM_MESSAGE_LENGTH = 9500;
-
- /**
- * @var string
- */
- private $token;
-
- /**
- * @var array
- */
- private $room;
-
- /**
- * @var string
- */
- private $name;
-
- /**
- * @var boolean
- */
- private $notify;
-
- /**
- * @var string
- */
- private $format;
-
- /**
- * @param string $token HipChat API Token
- * @param string $room The room that should be alerted of the message (Id or Name)
- * @param string $name Name used in the "from" field
- * @param bool $notify Trigger a notification in clients or not
- * @param int $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
- * @param Boolean $useSSL Whether to connect via SSL.
- * @param string $format The format of the messages (default to text, can be set to html if you have html in the messages)
- * @param string $host The HipChat server hostname.
- */
- public function __construct($token, $room, $name = 'Monolog', $notify = false, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $format = 'text', $host = 'api.hipchat.com')
- {
- if (!$this->validateStringLength($name, static::MAXIMUM_NAME_LENGTH)) {
- throw new \InvalidArgumentException('The supplied name is too long. HipChat\'s v1 API supports names up to 15 UTF-8 characters.');
- }
-
- $connectionString = $useSSL ? 'ssl://'.$host.':443' : $host.':80';
- parent::__construct($connectionString, $level, $bubble);
-
- $this->token = $token;
- $this->name = $name;
- $this->notify = $notify;
- $this->room = $room;
- $this->format = $format;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- /**
- * Builds the body of API call
- *
- * @param array $record
- * @return string
- */
- private function buildContent($record)
- {
- $dataArray = array(
- 'from' => $this->name,
- 'room_id' => $this->room,
- 'notify' => $this->notify,
- 'message' => $record['formatted'],
- 'message_format' => $this->format,
- 'color' => $this->getAlertColor($record['level']),
- );
-
- return http_build_query($dataArray);
- }
-
- /**
- * Builds the header of the API Call
- *
- * @param string $content
- * @return string
- */
- private function buildHeader($content)
- {
- $header = "POST /v1/rooms/message?format=json&auth_token=".$this->token." HTTP/1.1\r\n";
- $header .= "Host: api.hipchat.com\r\n";
- $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-
- /**
- * Assigns a color to each level of log records.
- *
- * @param integer $level
- * @return string
- */
- protected function getAlertColor($level)
- {
- switch (true) {
- case $level >= Logger::ERROR:
- return 'red';
- case $level >= Logger::WARNING:
- return 'yellow';
- case $level >= Logger::INFO:
- return 'green';
- case $level == Logger::DEBUG:
- return 'gray';
- default:
- return 'yellow';
- }
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- */
- protected function write(array $record)
- {
- parent::write($record);
- $this->closeSocket();
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- if (count($records) == 0) {
- return true;
- }
-
- $batchRecords = $this->combineRecords($records);
-
- $handled = false;
- foreach ($batchRecords as $batchRecord) {
- if ($this->isHandling($batchRecord)) {
- $this->write($batchRecord);
- $handled = true;
- }
- }
-
- if (!$handled) {
- return false;
- }
-
- return false === $this->bubble;
- }
-
- /**
- * Combines multiple records into one. Error level of the combined record
- * will be the highest level from the given records. Datetime will be taken
- * from the first record.
- *
- * @param $records
- * @return array
- */
- private function combineRecords($records)
- {
- $batchRecord = null;
- $batchRecords = array();
- $messages = array();
- $formattedMessages = array();
- $level = 0;
- $levelName = null;
- $datetime = null;
-
- foreach ($records as $record) {
- $record = $this->processRecord($record);
-
- if ($record['level'] > $level) {
- $level = $record['level'];
- $levelName = $record['level_name'];
- }
-
- if (null === $datetime) {
- $datetime = $record['datetime'];
- }
-
- $messages[] = $record['message'];
- $messgeStr = implode(PHP_EOL, $messages);
- $formattedMessages[] = $this->getFormatter()->format($record);
- $formattedMessageStr = implode('', $formattedMessages);
-
- $batchRecord = array(
- 'message' => $messgeStr,
- 'formatted' => $formattedMessageStr,
- 'context' => array(),
- 'extra' => array(),
- );
-
- if (!$this->validateStringLength($batchRecord['formatted'], static::MAXIMUM_MESSAGE_LENGTH)) {
- // Pop the last message and implode the remainging messages
- $lastMessage = array_pop($messages);
- $lastFormattedMessage = array_pop($formattedMessages);
- $batchRecord['message'] = implode(PHP_EOL, $messages);
- $batchRecord['formatted'] = implode('', $formattedMessages);
-
- $batchRecords[] = $batchRecord;
- $messages = array($lastMessage);
- $formattedMessages = array($lastFormattedMessage);
-
- $batchRecord = null;
- }
- }
-
- if (null !== $batchRecord) {
- $batchRecords[] = $batchRecord;
- }
-
- // Set the max level and datetime for all records
- foreach ($batchRecords as &$batchRecord) {
- $batchRecord = array_merge(
- $batchRecord,
- array(
- 'level' => $level,
- 'level_name' => $levelName,
- 'datetime' => $datetime
- )
- );
- }
-
- return $batchRecords;
- }
-
- /**
- * Validates the length of a string.
- *
- * If the `mb_strlen()` function is available, it will use that, as HipChat
- * allows UTF-8 characters. Otherwise, it will fall back to `strlen()`.
- *
- * Note that this might cause false failures in the specific case of using
- * a valid name with less than 16 characters, but 16 or more bytes, on a
- * system where `mb_strlen()` is unavailable.
- *
- * @param string $str
- * @param int $length
- *
- * @return bool
- */
- private function validateStringLength($str, $length)
- {
- if (function_exists('mb_strlen')) {
- return (mb_strlen($str) <= $length);
- }
-
- return (strlen($str) <= $length);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php
deleted file mode 100644
index 8bf388b3..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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\Logger;
-
-/**
- * @author Robert Kaufmann III <rok3@rok3.me>
- */
-class LogEntriesHandler extends SocketHandler
-{
- /**
- * @var string
- */
- protected $logToken;
-
- /**
- * @param string $token Log token supplied by LogEntries
- * @param boolean $useSSL Whether or not SSL encryption should be used.
- * @param int $level The minimum logging level to trigger this handler
- * @param boolean $bubble Whether or not messages that are handled should bubble up the stack.
- *
- * @throws MissingExtensionExcpetion If SSL encryption is set to true and OpenSSL is missing
- */
- public function __construct($token, $useSSL = true, $level = Logger::DEBUG, $bubble = true)
- {
- if ($useSSL && !extension_loaded('openssl')) {
- throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for LogEntriesHandler');
- }
-
- $endpoint = $useSSL ? 'ssl://api.logentries.com:20000' : 'data.logentries.com:80';
- parent::__construct($endpoint, $level, $bubble);
- $this->logToken = $token;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- return $this->logToken . ' ' . $record['formatted'];
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php
deleted file mode 100644
index efd94d30..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?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\Logger;
-use Monolog\Formatter\LogglyFormatter;
-
-/**
- * Sends errors to Loggly.
- *
- * @author Przemek Sobstel <przemek@sobstel.org>
- * @author Adam Pancutt <adam@pancutt.com>
- */
-class LogglyHandler extends AbstractProcessingHandler
-{
- const HOST = 'logs-01.loggly.com';
- const ENDPOINT_SINGLE = 'inputs';
- const ENDPOINT_BATCH = 'bulk';
-
- protected $token;
-
- protected $tag;
-
- public function __construct($token, $level = Logger::DEBUG, $bubble = true)
- {
- if (!extension_loaded('curl')) {
- throw new \LogicException('The curl extension is needed to use the LogglyHandler');
- }
-
- $this->token = $token;
-
- parent::__construct($level, $bubble);
- }
-
- public function setTag($tag)
- {
- $this->tag = $tag;
- }
-
- public function addTag($tag)
- {
- $this->tag = (strlen($this->tag) > 0) ? $this->tag .','. $tag : $tag;
- }
-
- protected function write(array $record)
- {
- $this->send($record["formatted"], self::ENDPOINT_SINGLE);
- }
-
- public function handleBatch(array $records)
- {
- $level = $this->level;
-
- $records = array_filter($records, function ($record) use ($level) {
- return ($record['level'] >= $level);
- });
-
- if ($records) {
- $this->send($this->getFormatter()->formatBatch($records), self::ENDPOINT_BATCH);
- }
- }
-
- protected function send($data, $endpoint)
- {
- $url = sprintf("https://%s/%s/%s/", self::HOST, $endpoint, $this->token);
-
- $headers = array('Content-Type: application/json');
-
- if ($this->tag) {
- $headers[] = "X-LOGGLY-TAG: {$this->tag}";
- }
-
- $ch = curl_init();
-
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-
- curl_exec($ch);
- curl_close($ch);
- }
-
- protected function getDefaultFormatter()
- {
- return new LogglyFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php
deleted file mode 100644
index 86292727..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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;
-
-/**
- * Base class for all mail handlers
- *
- * @author Gyula Sallai
- */
-abstract class MailHandler extends AbstractProcessingHandler
-{
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- $messages = array();
-
- foreach ($records as $record) {
- if ($record['level'] < $this->level) {
- continue;
- }
- $messages[] = $this->processRecord($record);
- }
-
- if (!empty($messages)) {
- $this->send((string) $this->getFormatter()->formatBatch($messages), $messages);
- }
- }
-
- /**
- * Send a mail with the given content
- *
- * @param string $content
- * @param array $records the array of log records that formed this content
- */
- abstract protected function send($content, array $records);
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $this->send((string) $record['formatted'], array($record));
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php
deleted file mode 100644
index 60a2901e..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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\Logger;
-
-/**
- * MandrillHandler uses cURL to send the emails to the Mandrill API
- *
- * @author Adam Nicholson <adamnicholson10@gmail.com>
- */
-class MandrillHandler extends MailHandler
-{
- protected $client;
- protected $message;
-
- /**
- * @param string $apiKey A valid Mandrill API key
- * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced
- * @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($apiKey, $message, $level = Logger::ERROR, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- if (!$message instanceof \Swift_Message && is_callable($message)) {
- $message = call_user_func($message);
- }
- if (!$message instanceof \Swift_Message) {
- throw new \InvalidArgumentException('You must provide either a Swift_Message instance or a callable returning it');
- }
- $this->message = $message;
- $this->apiKey = $apiKey;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function send($content, array $records)
- {
- $message = clone $this->message;
- $message->setBody($content);
- $message->setDate(time());
-
- $ch = curl_init();
-
- curl_setopt($ch, CURLOPT_URL, 'https://mandrillapp.com/api/1.0/messages/send-raw.json');
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
- 'key' => $this->apiKey,
- 'raw_message' => (string) $message,
- 'async' => false,
- )));
-
- curl_exec($ch);
- curl_close($ch);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php b/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php
deleted file mode 100644
index 4724a7e2..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * Exception can be thrown if an extension for an handler is missing
- *
- * @author Christian Bergau <cbergau86@gmail.com>
- */
-class MissingExtensionException extends \Exception
-{
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php
deleted file mode 100644
index 6c431f2b..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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\Logger;
-use Monolog\Formatter\NormalizerFormatter;
-
-/**
- * Logs to a MongoDB database.
- *
- * usage example:
- *
- * $log = new Logger('application');
- * $mongodb = new MongoDBHandler(new \Mongo("mongodb://localhost:27017"), "logs", "prod");
- * $log->pushHandler($mongodb);
- *
- * @author Thomas Tourlourat <thomas@tourlourat.com>
- */
-class MongoDBHandler extends AbstractProcessingHandler
-{
- protected $mongoCollection;
-
- public function __construct($mongo, $database, $collection, $level = Logger::DEBUG, $bubble = true)
- {
- if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo)) {
- throw new \InvalidArgumentException('MongoClient or Mongo instance required');
- }
-
- $this->mongoCollection = $mongo->selectCollection($database, $collection);
-
- parent::__construct($level, $bubble);
- }
-
- protected function write(array $record)
- {
- $this->mongoCollection->save($record["formatted"]);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new NormalizerFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php
deleted file mode 100644
index 0fe6b642..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?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\Logger;
-
-/**
- * NativeMailerHandler uses the mail() function to send the emails
- *
- * @author Christophe Coevoet <stof@notk.org>
- * @author Mark Garrett <mark@moderndeveloperllc.com>
- */
-class NativeMailerHandler extends MailHandler
-{
- /**
- * The email addresses to which the message will be sent
- * @var array
- */
- protected $to;
-
- /**
- * The subject of the email
- * @var string
- */
- protected $subject;
-
- /**
- * Optional headers for the message
- * @var array
- */
- protected $headers = array();
-
- /**
- * The wordwrap length for the message
- * @var integer
- */
- protected $maxColumnWidth;
-
- /**
- * The Content-type for the message
- * @var string
- */
- protected $contentType = 'text/plain';
-
- /**
- * The encoding for the message
- * @var string
- */
- protected $encoding = 'utf-8';
-
- /**
- * @param string|array $to The receiver of the mail
- * @param string $subject The subject of the mail
- * @param string $from The sender of the mail
- * @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
- * @param int $maxColumnWidth The maximum column width that the message lines will have
- */
- public function __construct($to, $subject, $from, $level = Logger::ERROR, $bubble = true, $maxColumnWidth = 70)
- {
- parent::__construct($level, $bubble);
- $this->to = is_array($to) ? $to : array($to);
- $this->subject = $subject;
- $this->addHeader(sprintf('From: %s', $from));
- $this->maxColumnWidth = $maxColumnWidth;
- }
-
- /**
- * Add headers to the message
- *
- * @param string|array $headers Custom added headers
- * @return null
- */
- public function addHeader($headers)
- {
- foreach ((array) $headers as $header) {
- if (strpos($header, "\n") !== false || strpos($header, "\r") !== false) {
- throw new \InvalidArgumentException('Headers can not contain newline characters for security reasons');
- }
- $this->headers[] = $header;
- }
- }
-
- /**
- * {@inheritdoc}
- */
- protected function send($content, array $records)
- {
- $content = wordwrap($content, $this->maxColumnWidth);
- $headers = ltrim(implode("\r\n", $this->headers) . "\r\n", "\r\n");
- $headers .= 'Content-type: ' . $this->getContentType() . '; charset=' . $this->getEncoding() . "\r\n";
- if ($this->getContentType() == 'text/html' && false === strpos($headers, 'MIME-Version:')) {
- $headers .= 'MIME-Version: 1.0' . "\r\n";
- }
- foreach ($this->to as $to) {
- mail($to, $this->subject, $content, $headers);
- }
- }
-
- /**
- * @return string $contentType
- */
- public function getContentType()
- {
- return $this->contentType;
- }
-
- /**
- * @return string $encoding
- */
- public function getEncoding()
- {
- return $this->encoding;
- }
-
- /**
- * @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML
- * messages.
- * @return self
- */
- public function setContentType($contentType)
- {
- if (strpos($contentType, "\n") !== false || strpos($contentType, "\r") !== false) {
- throw new \InvalidArgumentException('The content type can not contain newline characters to prevent email header injection');
- }
-
- $this->contentType = $contentType;
-
- return $this;
- }
-
- /**
- * @param string $encoding
- * @return self
- */
- public function setEncoding($encoding)
- {
- if (strpos($encoding, "\n") !== false || strpos($encoding, "\r") !== false) {
- throw new \InvalidArgumentException('The content type can not contain newline characters to prevent email header injection');
- }
-
- $this->encoding = $encoding;
-
- return $this;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php
deleted file mode 100644
index 9807410d..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php
+++ /dev/null
@@ -1,174 +0,0 @@
-<?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\Logger;
-
-/**
- * Class to record a log on a NewRelic application
- *
- * @see https://docs.newrelic.com/docs/agents/php-agent
- */
-class NewRelicHandler extends AbstractProcessingHandler
-{
- /**
- * Name of the New Relic application that will receive logs from this handler.
- *
- * @var string
- */
- protected $appName;
-
- /**
- * Name of the current transaction
- *
- * @var string
- */
- protected $transactionName;
-
- /**
- * Some context and extra data is passed into the handler as arrays of values. Do we send them as is
- * (useful if we are using the API), or explode them for display on the NewRelic RPM website?
- *
- * @var boolean
- */
- protected $explodeArrays;
-
- /**
- * {@inheritDoc}
- *
- * @param string $appName
- * @param boolean $explodeArrays
- * @param string $transactionName
- */
- public function __construct(
- $level = Logger::ERROR,
- $bubble = true,
- $appName = null,
- $explodeArrays = false,
- $transactionName = null
- ) {
- parent::__construct($level, $bubble);
-
- $this->appName = $appName;
- $this->explodeArrays = $explodeArrays;
- $this->transactionName = $transactionName;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function write(array $record)
- {
- if (!$this->isNewRelicEnabled()) {
- throw new MissingExtensionException('The newrelic PHP extension is required to use the NewRelicHandler');
- }
-
- if ($appName = $this->getAppName($record['context'])) {
- $this->setNewRelicAppName($appName);
- }
-
- if ($transactionName = $this->getTransactionName($record['context'])) {
- $this->setNewRelicTransactionName($transactionName);
- unset($record['context']['transaction_name']);
- }
-
- if (isset($record['context']['exception']) && $record['context']['exception'] instanceof \Exception) {
- newrelic_notice_error($record['message'], $record['context']['exception']);
- unset($record['context']['exception']);
- } else {
- newrelic_notice_error($record['message']);
- }
-
- foreach ($record['context'] as $key => $parameter) {
- if (is_array($parameter) && $this->explodeArrays) {
- foreach ($parameter as $paramKey => $paramValue) {
- newrelic_add_custom_parameter('context_' . $key . '_' . $paramKey, $paramValue);
- }
- } else {
- newrelic_add_custom_parameter('context_' . $key, $parameter);
- }
- }
-
- foreach ($record['extra'] as $key => $parameter) {
- if (is_array($parameter) && $this->explodeArrays) {
- foreach ($parameter as $paramKey => $paramValue) {
- newrelic_add_custom_parameter('extra_' . $key . '_' . $paramKey, $paramValue);
- }
- } else {
- newrelic_add_custom_parameter('extra_' . $key, $parameter);
- }
- }
- }
-
- /**
- * Checks whether the NewRelic extension is enabled in the system.
- *
- * @return bool
- */
- protected function isNewRelicEnabled()
- {
- return extension_loaded('newrelic');
- }
-
- /**
- * Returns the appname where this log should be sent. Each log can override the default appname, set in this
- * handler's constructor, by providing the appname in it's context.
- *
- * @param array $context
- * @return null|string
- */
- protected function getAppName(array $context)
- {
- if (isset($context['appname'])) {
- return $context['appname'];
- }
-
- return $this->appName;
- }
-
- /**
- * Returns the name of the current transaction. Each log can override the default transaction name, set in this
- * handler's constructor, by providing the transaction_name in it's context
- *
- * @param array $context
- *
- * @return null|string
- */
- protected function getTransactionName(array $context)
- {
- if (isset($context['transaction_name'])) {
- return $context['transaction_name'];
- }
-
- return $this->transactionName;
- }
-
- /**
- * Sets the NewRelic application that should receive this log.
- *
- * @param string $appName
- */
- protected function setNewRelicAppName($appName)
- {
- newrelic_set_appname($appName);
- }
-
- /**
- * Overwrites the name of the current transaction
- *
- * @param $transactionName
- */
- protected function setNewRelicTransactionName($transactionName)
- {
- newrelic_name_transaction($transactionName);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php
deleted file mode 100644
index 3754e45d..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\Logger;
-
-/**
- * Blackhole
- *
- * Any record it can handle will be thrown away. This can be used
- * to put on top of an existing stack to override it temporarily.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class NullHandler extends AbstractHandler
-{
- /**
- * @param integer $level The minimum logging level at which this handler will be triggered
- */
- public function __construct($level = Logger::DEBUG)
- {
- parent::__construct($level, false);
- }
-
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($record['level'] < $this->level) {
- return false;
- }
-
- return true;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php
deleted file mode 100644
index 1ae85845..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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\Logger;
-use Psr\Log\LoggerInterface;
-
-/**
- * Proxies log messages to an existing PSR-3 compliant logger.
- *
- * @author Michael Moussa <michael.moussa@gmail.com>
- */
-class PsrHandler extends AbstractHandler
-{
- /**
- * PSR-3 compliant logger
- *
- * @var LoggerInterface
- */
- protected $logger;
-
- /**
- * @param LoggerInterface $logger The underlying PSR-3 compliant logger to which messages will be proxied
- * @param int $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(LoggerInterface $logger, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- $this->logger = $logger;
- }
-
- /**
- * {@inheritDoc}
- */
- public function handle(array $record)
- {
- if (!$this->isHandling($record)) {
- return false;
- }
-
- $this->logger->log(strtolower($record['level_name']), $record['message'], $record['context']);
-
- return false === $this->bubble;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php
deleted file mode 100644
index cd2fcfa3..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?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\Logger;
-
-/**
- * Sends notifications through the pushover api to mobile phones
- *
- * @author Sebastian Göttschkes <sebastian.goettschkes@googlemail.com>
- * @see https://www.pushover.net/api
- */
-class PushoverHandler extends SocketHandler
-{
- private $token;
- private $users;
- private $title;
- private $user;
- private $retry;
- private $expire;
-
- private $highPriorityLevel;
- private $emergencyLevel;
-
- /**
- * All parameters that can be sent to Pushover
- * @see https://pushover.net/api
- * @var array
- */
- private $parameterNames = array(
- 'token' => true,
- 'user' => true,
- 'message' => true,
- 'device' => true,
- 'title' => true,
- 'url' => true,
- 'url_title' => true,
- 'priority' => true,
- 'timestamp' => true,
- 'sound' => true,
- 'retry' => true,
- 'expire' => true,
- 'callback' => true,
- );
-
- /**
- * Sounds the api supports by default
- * @see https://pushover.net/api#sounds
- * @var array
- */
- private $sounds = array(
- 'pushover', 'bike', 'bugle', 'cashregister', 'classical', 'cosmic', 'falling', 'gamelan', 'incoming',
- 'intermission', 'magic', 'mechanical', 'pianobar', 'siren', 'spacealarm', 'tugboat', 'alien', 'climb',
- 'persistent', 'echo', 'updown', 'none',
- );
-
- /**
- * @param string $token Pushover api token
- * @param string|array $users Pushover user id or array of ids the message will be sent to
- * @param string $title Title sent to the Pushover API
- * @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
- * @param Boolean $useSSL Whether to connect via SSL. Required when pushing messages to users that are not
- * the pushover.net app owner. OpenSSL is required for this option.
- * @param integer $highPriorityLevel The minimum logging level at which this handler will start
- * sending "high priority" requests to the Pushover API
- * @param integer $emergencyLevel The minimum logging level at which this handler will start
- * sending "emergency" requests to the Pushover API
- * @param integer $retry The retry parameter specifies how often (in seconds) the Pushover servers will send the same notification to the user.
- * @param integer $expire The expire parameter specifies how many seconds your notification will continue to be retried for (every retry seconds).
- */
- public function __construct($token, $users, $title = null, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $highPriorityLevel = Logger::CRITICAL, $emergencyLevel = Logger::EMERGENCY, $retry = 30, $expire = 25200)
- {
- $connectionString = $useSSL ? 'ssl://api.pushover.net:443' : 'api.pushover.net:80';
- parent::__construct($connectionString, $level, $bubble);
-
- $this->token = $token;
- $this->users = (array) $users;
- $this->title = $title ?: gethostname();
- $this->highPriorityLevel = Logger::toMonologLevel($highPriorityLevel);
- $this->emergencyLevel = Logger::toMonologLevel($emergencyLevel);
- $this->retry = $retry;
- $this->expire = $expire;
- }
-
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- private function buildContent($record)
- {
- // Pushover has a limit of 512 characters on title and message combined.
- $maxMessageLength = 512 - strlen($this->title);
- $message = substr($record['message'], 0, $maxMessageLength);
- $timestamp = $record['datetime']->getTimestamp();
-
- $dataArray = array(
- 'token' => $this->token,
- 'user' => $this->user,
- 'message' => $message,
- 'title' => $this->title,
- 'timestamp' => $timestamp
- );
-
- if (isset($record['level']) && $record['level'] >= $this->emergencyLevel) {
- $dataArray['priority'] = 2;
- $dataArray['retry'] = $this->retry;
- $dataArray['expire'] = $this->expire;
- } elseif (isset($record['level']) && $record['level'] >= $this->highPriorityLevel) {
- $dataArray['priority'] = 1;
- }
-
- // First determine the available parameters
- $context = array_intersect_key($record['context'], $this->parameterNames);
- $extra = array_intersect_key($record['extra'], $this->parameterNames);
-
- // Least important info should be merged with subsequent info
- $dataArray = array_merge($extra, $context, $dataArray);
-
- // Only pass sounds that are supported by the API
- if (isset($dataArray['sound']) && !in_array($dataArray['sound'], $this->sounds)) {
- unset($dataArray['sound']);
- }
-
- return http_build_query($dataArray);
- }
-
- private function buildHeader($content)
- {
- $header = "POST /1/messages.json HTTP/1.1\r\n";
- $header .= "Host: api.pushover.net\r\n";
- $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-
- protected function write(array $record)
- {
- foreach ($this->users as $user) {
- $this->user = $user;
-
- parent::write($record);
- $this->closeSocket();
- }
-
- $this->user = null;
- }
-
- public function setHighPriorityLevel($value)
- {
- $this->highPriorityLevel = $value;
- }
-
- public function setEmergencyLevel($value)
- {
- $this->emergencyLevel = $value;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php
deleted file mode 100644
index f5743cd6..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?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\LineFormatter;
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Logger;
-use Raven_Client;
-
-/**
- * Handler to send messages to a Sentry (https://github.com/getsentry/sentry) server
- * using raven-php (https://github.com/getsentry/raven-php)
- *
- * @author Marc Abramowitz <marc@marc-abramowitz.com>
- */
-class RavenHandler extends AbstractProcessingHandler
-{
- /**
- * Translates Monolog log levels to Raven log levels.
- */
- private $logLevels = array(
- Logger::DEBUG => Raven_Client::DEBUG,
- Logger::INFO => Raven_Client::INFO,
- Logger::NOTICE => Raven_Client::INFO,
- Logger::WARNING => Raven_Client::WARNING,
- Logger::ERROR => Raven_Client::ERROR,
- Logger::CRITICAL => Raven_Client::FATAL,
- Logger::ALERT => Raven_Client::FATAL,
- Logger::EMERGENCY => Raven_Client::FATAL,
- );
-
- /**
- * @var Raven_Client the client object that sends the message to the server
- */
- protected $ravenClient;
-
- /**
- * @var LineFormatter The formatter to use for the logs generated via handleBatch()
- */
- protected $batchFormatter;
-
- /**
- * @param Raven_Client $ravenClient
- * @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(Raven_Client $ravenClient, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
-
- $this->ravenClient = $ravenClient;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- $level = $this->level;
-
- // filter records based on their level
- $records = array_filter($records, function ($record) use ($level) {
- return $record['level'] >= $level;
- });
-
- if (!$records) {
- return;
- }
-
- // the record with the highest severity is the "main" one
- $record = array_reduce($records, function ($highest, $record) {
- if ($record['level'] >= $highest['level']) {
- return $record;
- }
-
- return $highest;
- });
-
- // the other ones are added as a context item
- $logs = array();
- foreach ($records as $r) {
- $logs[] = $this->processRecord($r);
- }
-
- if ($logs) {
- $record['context']['logs'] = (string) $this->getBatchFormatter()->formatBatch($logs);
- }
-
- $this->handle($record);
- }
-
- /**
- * Sets the formatter for the logs generated by handleBatch().
- *
- * @param FormatterInterface $formatter
- */
- public function setBatchFormatter(FormatterInterface $formatter)
- {
- $this->batchFormatter = $formatter;
- }
-
- /**
- * Gets the formatter for the logs generated by handleBatch().
- *
- * @return FormatterInterface
- */
- public function getBatchFormatter()
- {
- if (!$this->batchFormatter) {
- $this->batchFormatter = $this->getDefaultBatchFormatter();
- }
-
- return $this->batchFormatter;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $options = array();
- $options['level'] = $this->logLevels[$record['level']];
- $options['tags'] = array();
- if (!empty($record['extra']['tags'])) {
- $options['tags'] = array_merge($options['tags'], $record['extra']['tags']);
- unset($record['extra']['tags']);
- }
- if (!empty($record['context']['tags'])) {
- $options['tags'] = array_merge($options['tags'], $record['context']['tags']);
- unset($record['context']['tags']);
- }
- if (!empty($record['context']['logger'])) {
- $options['logger'] = $record['context']['logger'];
- unset($record['context']['logger']);
- } else {
- $options['logger'] = $record['channel'];
- }
- if (!empty($record['context'])) {
- $options['extra']['context'] = $record['context'];
- }
- if (!empty($record['extra'])) {
- $options['extra']['extra'] = $record['extra'];
- }
-
- if (isset($record['context']['exception']) && $record['context']['exception'] instanceof \Exception) {
- $options['extra']['message'] = $record['formatted'];
- $this->ravenClient->captureException($record['context']['exception'], $options);
-
- return;
- }
-
- $this->ravenClient->captureMessage($record['formatted'], array(), $options);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter('[%channel%] %message%');
- }
-
- /**
- * Gets the default formatter for the logs generated by handleBatch().
- *
- * @return FormatterInterface
- */
- protected function getDefaultBatchFormatter()
- {
- return new LineFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php
deleted file mode 100644
index 3fc7f34b..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\Logger;
-use Monolog\Formatter\LineFormatter;
-
-/**
- * Logs to a Redis key using rpush
- *
- * usage example:
- *
- * $log = new Logger('application');
- * $redis = new RedisHandler(new Predis\Client("tcp://localhost:6379"), "logs", "prod");
- * $log->pushHandler($redis);
- *
- * @author Thomas Tourlourat <thomas@tourlourat.com>
- */
-class RedisHandler extends AbstractProcessingHandler
-{
- private $redisClient;
- private $redisKey;
-
- # redis instance, key to use
- public function __construct($redis, $key, $level = Logger::DEBUG, $bubble = true)
- {
- if (!(($redis instanceof \Predis\Client) || ($redis instanceof \Redis))) {
- throw new \InvalidArgumentException('Predis\Client or Redis instance required');
- }
-
- $this->redisClient = $redis;
- $this->redisKey = $key;
-
- parent::__construct($level, $bubble);
- }
-
- protected function write(array $record)
- {
- $this->redisClient->rpush($this->redisKey, $record["formatted"]);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDefaultFormatter()
- {
- return new LineFormatter();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php
deleted file mode 100644
index 81abf086..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?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
- *
- * @author Paul Statezny <paulstatezny@gmail.com>
- */
-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();
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php
deleted file mode 100644
index 4168c32f..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?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\Logger;
-
-/**
- * Stores logs to files that are rotated every day and a limited number of files are kept.
- *
- * This rotation is only intended to be used as a workaround. Using logrotate to
- * handle the rotation is strongly encouraged when you can use it.
- *
- * @author Christophe Coevoet <stof@notk.org>
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class RotatingFileHandler extends StreamHandler
-{
- protected $filename;
- protected $maxFiles;
- protected $mustRotate;
- protected $nextRotation;
- protected $filenameFormat;
- protected $dateFormat;
-
- /**
- * @param string $filename
- * @param integer $maxFiles The maximal amount of files to keep (0 means unlimited)
- * @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
- * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write)
- * @param Boolean $useLocking Try to lock log file before doing any writes
- */
- public function __construct($filename, $maxFiles = 0, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false)
- {
- $this->filename = $filename;
- $this->maxFiles = (int) $maxFiles;
- $this->nextRotation = new \DateTime('tomorrow');
- $this->filenameFormat = '{filename}-{date}';
- $this->dateFormat = 'Y-m-d';
-
- parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission, $useLocking);
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- parent::close();
-
- if (true === $this->mustRotate) {
- $this->rotate();
- }
- }
-
- public function setFilenameFormat($filenameFormat, $dateFormat)
- {
- $this->filenameFormat = $filenameFormat;
- $this->dateFormat = $dateFormat;
- $this->url = $this->getTimedFilename();
- $this->close();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- // on the first record written, if the log is new, we should rotate (once per day)
- if (null === $this->mustRotate) {
- $this->mustRotate = !file_exists($this->url);
- }
-
- if ($this->nextRotation < $record['datetime']) {
- $this->mustRotate = true;
- $this->close();
- }
-
- parent::write($record);
- }
-
- /**
- * Rotates the files.
- */
- protected function rotate()
- {
- // update filename
- $this->url = $this->getTimedFilename();
- $this->nextRotation = new \DateTime('tomorrow');
-
- // skip GC of old logs if files are unlimited
- if (0 === $this->maxFiles) {
- return;
- }
-
- $logFiles = glob($this->getGlobPattern());
- if ($this->maxFiles >= count($logFiles)) {
- // no files to remove
- return;
- }
-
- // Sorting the files by name to remove the older ones
- usort($logFiles, function ($a, $b) {
- return strcmp($b, $a);
- });
-
- foreach (array_slice($logFiles, $this->maxFiles) as $file) {
- if (is_writable($file)) {
- unlink($file);
- }
- }
- }
-
- protected function getTimedFilename()
- {
- $fileInfo = pathinfo($this->filename);
- $timedFilename = str_replace(
- array('{filename}', '{date}'),
- array($fileInfo['filename'], date($this->dateFormat)),
- $fileInfo['dirname'] . '/' . $this->filenameFormat
- );
-
- if (!empty($fileInfo['extension'])) {
- $timedFilename .= '.'.$fileInfo['extension'];
- }
-
- return $timedFilename;
- }
-
- protected function getGlobPattern()
- {
- $fileInfo = pathinfo($this->filename);
- $glob = str_replace(
- array('{filename}', '{date}'),
- array($fileInfo['filename'], '*'),
- $fileInfo['dirname'] . '/' . $this->filenameFormat
- );
- if (!empty($fileInfo['extension'])) {
- $glob .= '.'.$fileInfo['extension'];
- }
-
- return $glob;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php
deleted file mode 100644
index 487e26f6..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?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;
-
-
-/**
- * Sampling handler
- *
- * A sampled event stream can be useful for logging high frequency events in
- * a production environment where you only need an idea of what is happening
- * and are not concerned with capturing every occurrence. Since the decision to
- * handle or not handle a particular event is determined randomly, the
- * resulting sampled log is not guaranteed to contain 1/N of the events that
- * occurred in the application, but based on the Law of large numbers, it will
- * tend to be close to this ratio with a large number of attempts.
- *
- * @author Bryan Davis <bd808@wikimedia.org>
- * @author Kunal Mehta <legoktm@gmail.com>
- */
-class SamplingHandler extends AbstractHandler
-{
- /**
- * @var callable|HandlerInterface $handler
- */
- protected $handler;
-
- /**
- * @var int $factor
- */
- protected $factor;
-
- /**
- * @param callable|HandlerInterface $handler Handler or factory callable($record, $fingersCrossedHandler).
- * @param int $factor Sample factor
- */
- public function __construct($handler, $factor)
- {
- parent::__construct();
- $this->handler = $handler;
- $this->factor = $factor;
-
- if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
- throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
- }
- }
-
- public function isHandling(array $record)
- {
- return $this->handler->isHandling($record);
- }
-
- public function handle(array $record)
- {
- if ($this->isHandling($record) && mt_rand(1, $this->factor) === 1) {
- // The same logic as in FingersCrossedHandler
- if (!$this->handler instanceof HandlerInterface) {
- $this->handler = call_user_func($this->handler, $record, $this);
- if (!$this->handler instanceof HandlerInterface) {
- throw new \RuntimeException("The factory callable should return a HandlerInterface");
- }
- }
-
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- $this->handler->handle($record);
- }
-
- return false === $this->bubble;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php
deleted file mode 100644
index e3c8e11b..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?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\Logger;
-use Monolog\Formatter\LineFormatter;
-
-/**
- * Sends notifications through Slack API
- *
- * @author Greg Kedzierski <greg@gregkedzierski.com>
- * @see https://api.slack.com/
- */
-class SlackHandler extends SocketHandler
-{
- /**
- * Slack API token
- * @var string
- */
- private $token;
-
- /**
- * Slack channel (encoded ID or name)
- * @var string
- */
- private $channel;
-
- /**
- * Name of a bot
- * @var string
- */
- private $username;
-
- /**
- * Emoji icon name
- * @var string
- */
- private $iconEmoji;
-
- /**
- * Whether the message should be added to Slack as attachment (plain text otherwise)
- * @var bool
- */
- private $useAttachment;
-
- /**
- * Whether the the message that is added to Slack as attachment is in a short style (or not)
- * @var bool
- */
- private $useShortAttachment;
-
- /**
- * Whether the attachment should include extra data (or not)
- * @var bool
- */
- private $includeExtra;
-
- /**
- * @var LineFormatter
- */
- private $lineFormatter;
-
- /**
- * @param string $token Slack API token
- * @param string $channel Slack channel (encoded ID or name)
- * @param string $username Name of a bot
- * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise)
- * @param string|null $iconEmoji The emoji name to use (or null)
- * @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($token, $channel, $username = 'Monolog', $useAttachment = true, $iconEmoji = null, $level = Logger::CRITICAL, $bubble = true, $useShortAttachment = false, $includeExtra = false)
- {
- if (!extension_loaded('openssl')) {
- throw new MissingExtensionException('The OpenSSL PHP extension is required to use the SlackHandler');
- }
-
- parent::__construct('ssl://slack.com:443', $level, $bubble);
-
- $this->token = $token;
- $this->channel = $channel;
- $this->username = $username;
- $this->iconEmoji = trim($iconEmoji, ':');
- $this->useAttachment = $useAttachment;
- $this->useShortAttachment = $useShortAttachment;
- $this->includeExtra = $includeExtra;
- if ($this->includeExtra) {
- $this->lineFormatter = new LineFormatter;
- }
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- * @return string
- */
- protected function generateDataStream($record)
- {
- $content = $this->buildContent($record);
-
- return $this->buildHeader($content) . $content;
- }
-
- /**
- * Builds the body of API call
- *
- * @param array $record
- * @return string
- */
- private function buildContent($record)
- {
- $dataArray = array(
- 'token' => $this->token,
- 'channel' => $this->channel,
- 'username' => $this->username,
- 'text' => '',
- 'attachments' => array()
- );
-
- if ($this->useAttachment) {
- $attachment = array(
- 'fallback' => $record['message'],
- 'color' => $this->getAttachmentColor($record['level'])
- );
-
- if ($this->useShortAttachment) {
- $attachment['fields'] = array(
- array(
- 'title' => $record['level_name'],
- 'value' => $record['message'],
- 'short' => false
- )
- );
- } else {
- $attachment['fields'] = array(
- array(
- 'title' => 'Message',
- 'value' => $record['message'],
- 'short' => false
- ),
- array(
- 'title' => 'Level',
- 'value' => $record['level_name'],
- 'short' => true
- )
- );
- }
-
- if ($this->includeExtra) {
- $extra = '';
- foreach ($record['extra'] as $var => $val) {
- $extra .= $var.': '.$this->lineFormatter->stringify($val)." | ";
- }
-
- $extra = rtrim($extra, " |");
-
- $attachment['fields'][] = array(
- 'title' => "Extra",
- 'value' => $extra,
- 'short' => false
- );
- }
-
- $dataArray['attachments'] = json_encode(array($attachment));
- } else {
- $dataArray['text'] = $record['message'];
- }
-
- if ($this->iconEmoji) {
- $dataArray['icon_emoji'] = ":{$this->iconEmoji}:";
- }
-
- return http_build_query($dataArray);
- }
-
- /**
- * Builds the header of the API Call
- *
- * @param string $content
- * @return string
- */
- private function buildHeader($content)
- {
- $header = "POST /api/chat.postMessage HTTP/1.1\r\n";
- $header .= "Host: slack.com\r\n";
- $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $header .= "Content-Length: " . strlen($content) . "\r\n";
- $header .= "\r\n";
-
- return $header;
- }
-
- /**
- * {@inheritdoc}
- *
- * @param array $record
- */
- protected function write(array $record)
- {
- parent::write($record);
- $this->closeSocket();
- }
-
- /**
- * Returned a Slack message attachment color associated with
- * provided level.
- *
- * @param int $level
- * @return string
- */
- protected function getAttachmentColor($level)
- {
- switch (true) {
- case $level >= Logger::ERROR:
- return 'danger';
- case $level >= Logger::WARNING:
- return 'warning';
- case $level >= Logger::INFO:
- return 'good';
- default:
- return '#e3e4e6';
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php
deleted file mode 100644
index ee486f69..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?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\Logger;
-
-/**
- * Stores to any socket - uses fsockopen() or pfsockopen().
- *
- * @author Pablo de Leon Belloc <pablolb@gmail.com>
- * @see http://php.net/manual/en/function.fsockopen.php
- */
-class SocketHandler extends AbstractProcessingHandler
-{
- private $connectionString;
- private $connectionTimeout;
- private $resource;
- private $timeout = 0;
- private $persistent = false;
- private $errno;
- private $errstr;
-
- /**
- * @param string $connectionString Socket connection string
- * @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($connectionString, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($level, $bubble);
- $this->connectionString = $connectionString;
- $this->connectionTimeout = (float) ini_get('default_socket_timeout');
- }
-
- /**
- * Connect (if necessary) and write to the socket
- *
- * @param array $record
- *
- * @throws \UnexpectedValueException
- * @throws \RuntimeException
- */
- protected function write(array $record)
- {
- $this->connectIfNotConnected();
- $data = $this->generateDataStream($record);
- $this->writeToSocket($data);
- }
-
- /**
- * We will not close a PersistentSocket instance so it can be reused in other requests.
- */
- public function close()
- {
- if (!$this->isPersistent()) {
- $this->closeSocket();
- }
- }
-
- /**
- * Close socket, if open
- */
- public function closeSocket()
- {
- if (is_resource($this->resource)) {
- fclose($this->resource);
- $this->resource = null;
- }
- }
-
- /**
- * Set socket connection to nbe persistent. It only has effect before the connection is initiated.
- *
- * @param type $boolean
- */
- public function setPersistent($boolean)
- {
- $this->persistent = (boolean) $boolean;
- }
-
- /**
- * Set connection timeout. Only has effect before we connect.
- *
- * @param float $seconds
- *
- * @see http://php.net/manual/en/function.fsockopen.php
- */
- public function setConnectionTimeout($seconds)
- {
- $this->validateTimeout($seconds);
- $this->connectionTimeout = (float) $seconds;
- }
-
- /**
- * Set write timeout. Only has effect before we connect.
- *
- * @param float $seconds
- *
- * @see http://php.net/manual/en/function.stream-set-timeout.php
- */
- public function setTimeout($seconds)
- {
- $this->validateTimeout($seconds);
- $this->timeout = (float) $seconds;
- }
-
- /**
- * Get current connection string
- *
- * @return string
- */
- public function getConnectionString()
- {
- return $this->connectionString;
- }
-
- /**
- * Get persistent setting
- *
- * @return boolean
- */
- public function isPersistent()
- {
- return $this->persistent;
- }
-
- /**
- * Get current connection timeout setting
- *
- * @return float
- */
- public function getConnectionTimeout()
- {
- return $this->connectionTimeout;
- }
-
- /**
- * Get current in-transfer timeout
- *
- * @return float
- */
- public function getTimeout()
- {
- return $this->timeout;
- }
-
- /**
- * Check to see if the socket is currently available.
- *
- * UDP might appear to be connected but might fail when writing. See http://php.net/fsockopen for details.
- *
- * @return boolean
- */
- public function isConnected()
- {
- return is_resource($this->resource)
- && !feof($this->resource); // on TCP - other party can close connection.
- }
-
- /**
- * Wrapper to allow mocking
- */
- protected function pfsockopen()
- {
- return @pfsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout);
- }
-
- /**
- * Wrapper to allow mocking
- */
- protected function fsockopen()
- {
- return @fsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout);
- }
-
- /**
- * Wrapper to allow mocking
- *
- * @see http://php.net/manual/en/function.stream-set-timeout.php
- */
- protected function streamSetTimeout()
- {
- $seconds = floor($this->timeout);
- $microseconds = round(($this->timeout - $seconds)*1e6);
-
- return stream_set_timeout($this->resource, $seconds, $microseconds);
- }
-
- /**
- * Wrapper to allow mocking
- */
- protected function fwrite($data)
- {
- return @fwrite($this->resource, $data);
- }
-
- /**
- * Wrapper to allow mocking
- */
- protected function streamGetMetadata()
- {
- return stream_get_meta_data($this->resource);
- }
-
- private function validateTimeout($value)
- {
- $ok = filter_var($value, FILTER_VALIDATE_FLOAT);
- if ($ok === false || $value < 0) {
- throw new \InvalidArgumentException("Timeout must be 0 or a positive float (got $value)");
- }
- }
-
- private function connectIfNotConnected()
- {
- if ($this->isConnected()) {
- return;
- }
- $this->connect();
- }
-
- protected function generateDataStream($record)
- {
- return (string) $record['formatted'];
- }
-
- private function connect()
- {
- $this->createSocketResource();
- $this->setSocketTimeout();
- }
-
- private function createSocketResource()
- {
- if ($this->isPersistent()) {
- $resource = $this->pfsockopen();
- } else {
- $resource = $this->fsockopen();
- }
- if (!$resource) {
- throw new \UnexpectedValueException("Failed connecting to $this->connectionString ($this->errno: $this->errstr)");
- }
- $this->resource = $resource;
- }
-
- private function setSocketTimeout()
- {
- if (!$this->streamSetTimeout()) {
- throw new \UnexpectedValueException("Failed setting timeout with stream_set_timeout()");
- }
- }
-
- private function writeToSocket($data)
- {
- $length = strlen($data);
- $sent = 0;
- while ($this->isConnected() && $sent < $length) {
- if (0 == $sent) {
- $chunk = $this->fwrite($data);
- } else {
- $chunk = $this->fwrite(substr($data, $sent));
- }
- if ($chunk === false) {
- throw new \RuntimeException("Could not write to socket");
- }
- $sent += $chunk;
- $socketInfo = $this->streamGetMetadata();
- if ($socketInfo['timed_out']) {
- throw new \RuntimeException("Write timed-out");
- }
- }
- if (!$this->isConnected() && $sent < $length) {
- throw new \RuntimeException("End-of-file reached, probably we got disconnected (sent $sent of $length)");
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
deleted file mode 100644
index 7965db74..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?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\Logger;
-
-/**
- * Stores to any stream resource
- *
- * Can be used to store into php://stderr, remote and local files, etc.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class StreamHandler extends AbstractProcessingHandler
-{
- protected $stream;
- protected $url;
- private $errorMessage;
- protected $filePermission;
- protected $useLocking;
-
- /**
- * @param resource|string $stream
- * @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
- * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write)
- * @param Boolean $useLocking Try to lock log file before doing any writes
- *
- * @throws \InvalidArgumentException If stream is not a resource or string
- */
- public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false)
- {
- parent::__construct($level, $bubble);
- if (is_resource($stream)) {
- $this->stream = $stream;
- } elseif (is_string($stream)) {
- $this->url = $stream;
- } else {
- throw new \InvalidArgumentException('A stream must either be a resource or a string.');
- }
-
- $this->filePermission = $filePermission;
- $this->useLocking = $useLocking;
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- if (is_resource($this->stream)) {
- fclose($this->stream);
- }
- $this->stream = null;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- if (!is_resource($this->stream)) {
- if (!$this->url) {
- throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().');
- }
- $this->errorMessage = null;
- set_error_handler(array($this, 'customErrorHandler'));
- $this->stream = fopen($this->url, 'a');
- if ($this->filePermission !== null) {
- @chmod($this->url, $this->filePermission);
- }
- restore_error_handler();
- if (!is_resource($this->stream)) {
- $this->stream = null;
- throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url));
- }
- }
-
- if ($this->useLocking) {
- // ignoring errors here, there's not much we can do about them
- flock($this->stream, LOCK_EX);
- }
-
- fwrite($this->stream, (string) $record['formatted']);
-
- if ($this->useLocking) {
- flock($this->stream, LOCK_UN);
- }
- }
-
- private function customErrorHandler($code, $msg)
- {
- $this->errorMessage = preg_replace('{^fopen\(.*?\): }', '', $msg);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php
deleted file mode 100644
index af321db2..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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\Logger;
-
-/**
- * SwiftMailerHandler uses Swift_Mailer to send the emails
- *
- * @author Gyula Sallai
- */
-class SwiftMailerHandler extends MailHandler
-{
- protected $mailer;
- protected $message;
-
- /**
- * @param \Swift_Mailer $mailer The mailer to use
- * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced
- * @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(\Swift_Mailer $mailer, $message, $level = Logger::ERROR, $bubble = true)
- {
- parent::__construct($level, $bubble);
- $this->mailer = $mailer;
- if (!$message instanceof \Swift_Message && is_callable($message)) {
- $message = call_user_func($message);
- }
- if (!$message instanceof \Swift_Message) {
- throw new \InvalidArgumentException('You must provide either a Swift_Message instance or a callable returning it');
- }
- $this->message = $message;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function send($content, array $records)
- {
- $message = clone $this->message;
- $message->setBody($content);
- $message->setDate(time());
-
- $this->mailer->send($message);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php
deleted file mode 100644
index 47c73e12..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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\Logger;
-
-/**
- * Logs to syslog service.
- *
- * usage example:
- *
- * $log = new Logger('application');
- * $syslog = new SyslogHandler('myfacility', 'local6');
- * $formatter = new LineFormatter("%channel%.%level_name%: %message% %extra%");
- * $syslog->setFormatter($formatter);
- * $log->pushHandler($syslog);
- *
- * @author Sven Paulus <sven@karlsruhe.org>
- */
-class SyslogHandler extends AbstractSyslogHandler
-{
- protected $ident;
- protected $logopts;
-
- /**
- * @param string $ident
- * @param mixed $facility
- * @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
- * @param int $logopts Option flags for the openlog() call, defaults to LOG_PID
- */
- public function __construct($ident, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $logopts = LOG_PID)
- {
- parent::__construct($facility, $level, $bubble);
-
- $this->ident = $ident;
- $this->logopts = $logopts;
- }
-
- /**
- * {@inheritdoc}
- */
- public function close()
- {
- closelog();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- if (!openlog($this->ident, $this->logopts, $this->facility)) {
- throw new \LogicException('Can\'t open syslog for ident "'.$this->ident.'" and facility "'.$this->facility.'"');
- }
- syslog($this->logLevels[$record['level']], (string) $record['formatted']);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php b/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php
deleted file mode 100644
index dcf3f1f9..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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\SyslogUdp;
-
-class UdpSocket
-{
- const DATAGRAM_MAX_LENGTH = 65023;
-
- public function __construct($ip, $port = 514)
- {
- $this->ip = $ip;
- $this->port = $port;
- $this->socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
- }
-
- public function write($line, $header = "")
- {
- $this->send($this->assembleMessage($line, $header));
- }
-
- public function close()
- {
- socket_close($this->socket);
- }
-
- protected function send($chunk)
- {
- socket_sendto($this->socket, $chunk, strlen($chunk), $flags = 0, $this->ip, $this->port);
- }
-
- protected function assembleMessage($line, $header)
- {
- $chunkSize = self::DATAGRAM_MAX_LENGTH - strlen($header);
-
- return $header . substr($line, 0, $chunkSize);
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php
deleted file mode 100644
index aa047c07..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?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\Logger;
-use Monolog\Handler\SyslogUdp\UdpSocket;
-
-/**
- * A Handler for logging to a remote syslogd server.
- *
- * @author Jesper Skovgaard Nielsen <nulpunkt@gmail.com>
- */
-class SyslogUdpHandler extends AbstractSyslogHandler
-{
- /**
- * @param string $host
- * @param int $port
- * @param mixed $facility
- * @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($host, $port = 514, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true)
- {
- parent::__construct($facility, $level, $bubble);
-
- $this->socket = new UdpSocket($host, $port ?: 514);
- }
-
- protected function write(array $record)
- {
- $lines = $this->splitMessageIntoLines($record['formatted']);
-
- $header = $this->makeCommonSyslogHeader($this->logLevels[$record['level']]);
-
- foreach ($lines as $line) {
- $this->socket->write($line, $header);
- }
- }
-
- public function close()
- {
- $this->socket->close();
- }
-
- private function splitMessageIntoLines($message)
- {
- if (is_array($message)) {
- $message = implode("\n", $message);
- }
-
- return preg_split('/$\R?^/m', $message);
- }
-
- /**
- * Make common syslog header (see rfc5424)
- */
- protected function makeCommonSyslogHeader($severity)
- {
- $priority = $severity + $this->facility;
-
- return "<$priority>1 ";
- }
-
- /**
- * Inject your own socket, mainly used for testing
- */
- public function setSocket($socket)
- {
- $this->socket = $socket;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php
deleted file mode 100644
index 085d9e17..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?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\Logger;
-
-/**
- * Used for testing purposes.
- *
- * It records all records and gives you access to them for verification.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class TestHandler extends AbstractProcessingHandler
-{
- protected $records = array();
- protected $recordsByLevel = array();
-
- public function getRecords()
- {
- return $this->records;
- }
-
- public function hasEmergency($record)
- {
- return $this->hasRecord($record, Logger::EMERGENCY);
- }
-
- public function hasAlert($record)
- {
- return $this->hasRecord($record, Logger::ALERT);
- }
-
- public function hasCritical($record)
- {
- return $this->hasRecord($record, Logger::CRITICAL);
- }
-
- public function hasError($record)
- {
- return $this->hasRecord($record, Logger::ERROR);
- }
-
- public function hasWarning($record)
- {
- return $this->hasRecord($record, Logger::WARNING);
- }
-
- public function hasNotice($record)
- {
- return $this->hasRecord($record, Logger::NOTICE);
- }
-
- public function hasInfo($record)
- {
- return $this->hasRecord($record, Logger::INFO);
- }
-
- public function hasDebug($record)
- {
- return $this->hasRecord($record, Logger::DEBUG);
- }
-
- public function hasEmergencyRecords()
- {
- return isset($this->recordsByLevel[Logger::EMERGENCY]);
- }
-
- public function hasAlertRecords()
- {
- return isset($this->recordsByLevel[Logger::ALERT]);
- }
-
- public function hasCriticalRecords()
- {
- return isset($this->recordsByLevel[Logger::CRITICAL]);
- }
-
- public function hasErrorRecords()
- {
- return isset($this->recordsByLevel[Logger::ERROR]);
- }
-
- public function hasWarningRecords()
- {
- return isset($this->recordsByLevel[Logger::WARNING]);
- }
-
- public function hasNoticeRecords()
- {
- return isset($this->recordsByLevel[Logger::NOTICE]);
- }
-
- public function hasInfoRecords()
- {
- return isset($this->recordsByLevel[Logger::INFO]);
- }
-
- public function hasDebugRecords()
- {
- return isset($this->recordsByLevel[Logger::DEBUG]);
- }
-
- protected function hasRecord($record, $level)
- {
- if (!isset($this->recordsByLevel[$level])) {
- return false;
- }
-
- if (is_array($record)) {
- $record = $record['message'];
- }
-
- foreach ($this->recordsByLevel[$level] as $rec) {
- if ($rec['message'] === $record) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $this->recordsByLevel[$record['level']][] = $record;
- $this->records[] = $record;
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php
deleted file mode 100644
index 05a88173..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?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;
-
-/**
- * Forwards records to multiple handlers suppressing failures of each handler
- * and continuing through to give every handler a chance to succeed.
- *
- * @author Craig D'Amelio <craig@damelio.ca>
- */
-class WhatFailureGroupHandler extends GroupHandler
-{
- /**
- * {@inheritdoc}
- */
- public function handle(array $record)
- {
- if ($this->processors) {
- foreach ($this->processors as $processor) {
- $record = call_user_func($processor, $record);
- }
- }
-
- foreach ($this->handlers as $handler) {
- try {
- $handler->handle($record);
- } catch (\Exception $e) {
- // What failure?
- }
- }
-
- return false === $this->bubble;
- }
-
- /**
- * {@inheritdoc}
- */
- public function handleBatch(array $records)
- {
- foreach ($this->handlers as $handler) {
- try {
- $handler->handleBatch($records);
- } catch (\Exception $e) {
- // What failure?
- }
- }
- }
-}
diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php
deleted file mode 100644
index f22cf218..00000000
--- a/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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\NormalizerFormatter;
-use Monolog\Logger;
-
-/**
- * Handler sending logs to Zend Monitor
- *
- * @author Christian Bergau <cbergau86@gmail.com>
- */
-class ZendMonitorHandler extends AbstractProcessingHandler
-{
- /**
- * Monolog level / ZendMonitor Custom Event priority map
- *
- * @var array
- */
- protected $levelMap = array(
- Logger::DEBUG => 1,
- Logger::INFO => 2,
- Logger::NOTICE => 3,
- Logger::WARNING => 4,
- Logger::ERROR => 5,
- Logger::CRITICAL => 6,
- Logger::ALERT => 7,
- Logger::EMERGENCY => 0,
- );
-
- /**
- * Construct
- *
- * @param int $level
- * @param bool $bubble
- * @throws MissingExtensionException
- */
- public function __construct($level = Logger::DEBUG, $bubble = true)
- {
- if (!function_exists('zend_monitor_custom_event')) {
- throw new MissingExtensionException('You must have Zend Server installed in order to use this handler');
- }
- parent::__construct($level, $bubble);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function write(array $record)
- {
- $this->writeZendMonitorCustomEvent(
- $this->levelMap[$record['level']],
- $record['message'],
- $record['formatted']
- );
- }
-
- /**
- * Write a record to Zend Monitor
- *
- * @param int $level
- * @param string $message
- * @param array $formatted
- */
- protected function writeZendMonitorCustomEvent($level, $message, $formatted)
- {
- zend_monitor_custom_event($level, $message, $formatted);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDefaultFormatter()
- {
- return new NormalizerFormatter();
- }
-
- /**
- * Get the level map
- *
- * @return array
- */
- public function getLevelMap()
- {
- return $this->levelMap;
- }
-}