From c0cc2b6cdf9c0f288838e02a8bd50740a6cb7986 Mon Sep 17 00:00:00 2001 From: Martijn van Calker Date: Thu, 3 Nov 2016 13:20:20 +0100 Subject: [PATCH] Add SqsHandler --- doc/02-handlers-formatters-processors.md | 1 + src/Monolog/Handler/SqsHandler.php | 53 ++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/Monolog/Handler/SqsHandler.php diff --git a/doc/02-handlers-formatters-processors.md b/doc/02-handlers-formatters-processors.md index 93dc58dd..76cdace4 100644 --- a/doc/02-handlers-formatters-processors.md +++ b/doc/02-handlers-formatters-processors.md @@ -56,6 +56,7 @@ - [_SyslogUdpHandler_](../src/Monolog/Handler/SyslogUdpHandler.php): Logs records to a remote [Syslogd](http://www.rsyslog.com/) server. - [_LogEntriesHandler_](../src/Monolog/Handler/LogEntriesHandler.php): Logs records to a [LogEntries](http://logentries.com/) account. - [_LogmaticHandler_](../src/Monolog/Handler/LogmaticHandler.php): Logs records to a [Logmatic](http://logmatic.io/) account. +- [_SqsHandler_](../src/Monolog/Handler/SqsHandler.php): Logs records to a [AWS Sqs queue](http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-sqs.html) account. ### Logging in development diff --git a/src/Monolog/Handler/SqsHandler.php b/src/Monolog/Handler/SqsHandler.php new file mode 100644 index 00000000..01c70dce --- /dev/null +++ b/src/Monolog/Handler/SqsHandler.php @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Aws\Sqs\SqsClient; +use Monolog\Logger; + +/** + * Writes to any sqs queue. + * + * @author Martijn van Calker + */ +class SqsHandler extends AbstractProcessingHandler +{ + /** @var SqsClient */ + private $client; + /** @var string */ + private $queueUrl; + + public function __construct(SqsClient $sqsClient, $queueUrl, $level = Logger::DEBUG, $bubble = true) + { + parent::__construct($level, $bubble); + + $this->client = $sqsClient; + $this->queueUrl = $queueUrl; + } + + /** + * Writes the record down to the log of the implementing handler. + * + * @param array $record + */ + protected function write(array $record) + { + if (!isset($record['formatted']) || 'string' !== gettype($record['formatted'])) { + throw new \InvalidArgumentException('SqsHandler accepts only formatted records as a string'); + } + + $this->client->sendMessage([ + 'QueueUrl' => $this->queueUrl, + 'MessageBody' => $record['formatted'], + ]); + } +}