mirror of
				https://github.com/Seldaek/monolog.git
				synced 2025-10-24 18:16:10 +02:00 
			
		
		
		
	Merge remote-tracking branch 'adlawson/dynamodb-handler'
Conflicts: README.mdown composer.json
This commit is contained in:
		
							
								
								
									
										50
									
								
								src/Monolog/Formatter/ScalarFormatter.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								src/Monolog/Formatter/ScalarFormatter.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| <?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\Formatter; | ||||
|  | ||||
| use Monolog\Formatter\NormalizerFormatter; | ||||
|  | ||||
| /** | ||||
|  * Formats data into an associative array of scalar values. | ||||
|  * Objects and arrays will be JSON encoded. | ||||
|  * | ||||
|  * @author Andrew Lawson <adlawson@gmail.com> | ||||
|  */ | ||||
| class ScalarFormatter extends NormalizerFormatter | ||||
| { | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function format(array $record) | ||||
|     { | ||||
|         foreach ($record as $key => $value) { | ||||
|             $record[$key] = $this->normalizeValue($value); | ||||
|         } | ||||
|  | ||||
|         return $record; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param mixed $value | ||||
|      * @return mixed | ||||
|      */ | ||||
|     protected function normalizeValue($value) | ||||
|     { | ||||
|         $normalized = $this->normalize($value); | ||||
|  | ||||
|         if (is_array($normalized) || is_object($normalized)) { | ||||
|             return $this->toJson($normalized, true); | ||||
|         } | ||||
|  | ||||
|         return $normalized; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										85
									
								
								src/Monolog/Handler/DynamoDbHandler.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								src/Monolog/Handler/DynamoDbHandler.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| <?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\DynamoDb\DynamoDbClient; | ||||
| use Monolog\Formatter\ScalarFormatter; | ||||
| use Monolog\Handler\AbstractProcessingHandler; | ||||
| 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) | ||||
|     { | ||||
|         $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); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user