Martijn van Calker 9 лет назад
Родитель
Сommit
c0cc2b6cdf
2 измененных файлов с 54 добавлено и 0 удалено
  1. 1 0
      doc/02-handlers-formatters-processors.md
  2. 53 0
      src/Monolog/Handler/SqsHandler.php

+ 1 - 0
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.
 - [_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.
 - [_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.
 - [_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
 ### Logging in development
 
 

+ 53 - 0
src/Monolog/Handler/SqsHandler.php

@@ -0,0 +1,53 @@
+<?php declare(strict_types=1);
+
+/*
+ * 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\Sqs\SqsClient;
+use Monolog\Logger;
+
+/**
+ * Writes to any sqs queue.
+ *
+ * @author Martijn van Calker <git@amvc.nl>
+ */
+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'],
+        ]);
+    }
+}