Przeglądaj źródła

adds a redis handler

This is useful when used in conjuction with the LogstashFormatter, but
should also be useful for any formatter where $message["formatted"] is
a string.
Jeremy Kitchen 13 lat temu
rodzic
commit
87781ebcb4
1 zmienionych plików z 59 dodań i 0 usunięć
  1. 59 0
      src/Monolog/Handler/RedisHandler.php

+ 59 - 0
src/Monolog/Handler/RedisHandler.php

@@ -0,0 +1,59 @@
+<?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\LogstashFormatter;
+use Predis\Client;
+
+/**
+ * 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 Client)) {
+            throw new \InvalidArgumentException('Predis\Client 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 LogstashFormatter();
+    }
+}