mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-05 12:47:39 +02:00
Add SqsHandler
This commit is contained in:
@@ -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
|
||||
|
||||
|
53
src/Monolog/Handler/SqsHandler.php
Normal file
53
src/Monolog/Handler/SqsHandler.php
Normal file
@@ -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'],
|
||||
]);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user