Blame view

sources/apps/files_external/3rdparty/aws-sdk-php/Monolog/Handler/RedisHandler.php 1.38 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
  <?php
  
  /*
   * This file is part of the Monolog package.
   *
   * (c) Thomas Tourlourat <thomas@tourlourat.com>
   *
   * 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();
      }
  }