Add a Horde_Log_Handler for Scribe
authorChuck Hagenbuch <chuck@horde.org>
Sun, 30 May 2010 19:33:51 +0000 (15:33 -0400)
committerChuck Hagenbuch <chuck@horde.org>
Sun, 30 May 2010 19:33:51 +0000 (15:33 -0400)
framework/Log/lib/Horde/Log/Handler/Scribe.php [new file with mode: 0644]
framework/Log/package.xml

diff --git a/framework/Log/lib/Horde/Log/Handler/Scribe.php b/framework/Log/lib/Horde/Log/Handler/Scribe.php
new file mode 100644 (file)
index 0000000..13e4050
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Horde Log package
+ *
+ * @category   Horde
+ * @package    Horde_Log
+ * @subpackage Handlers
+ * @author     Mike Naberezny <mike@maintainable.com>
+ * @author     Chuck Hagenbuch <chuck@horde.org>
+ * @license    http://opensource.org/licenses/bsd-license.php BSD
+ */
+
+/**
+ * @category   Horde
+ * @package    Horde_Log
+ * @subpackage Handlers
+ * @author     Mike Naberezny <mike@maintainable.com>
+ * @author     Chuck Hagenbuch <chuck@horde.org>
+ * @license    http://opensource.org/licenses/bsd-license.php BSD
+ */
+class Horde_Log_Handler_Scribe extends Horde_Log_Handler_Base
+{
+    /**
+     * Scribe client
+     * @var Horde_Scribe_Client
+     */
+    protected $_scribe;
+
+    /**
+     * Formats the log message before writing.
+     * @var Horde_Log_Formatter_Interface
+     */
+    protected $_formatter;
+
+    /**
+     * Options to be set by setOption().
+     * @var array
+     */
+    protected $_options = array(
+        'category'   => 'default',
+        'addNewline' => false,
+    );
+
+    /**
+     * Class Constructor
+     *
+     * @param Horde_Scribe_Client           $scribe     Scribe client
+     * @param Horde_Log_Formatter_Interface $formatter  Log formatter
+     */
+    public function __construct(Horde_Scribe_Client $scribe,
+                                Horde_Log_Formatter_Interface $formatter = null)
+    {
+        if (is_null($formatter)) {
+            $formatter = new Horde_Log_Formatter_Simple();
+        }
+
+        $this->_scribe = $scribe;
+        $this->_formatter = $formatter;
+    }
+
+    /**
+     * Write a message to the log.
+     *
+     * @param  array    $event    Log event
+     * @return bool               Always True
+     */
+    public function write($event)
+    {
+        $category = isset($event['category']) ? $event['category'] : $this->_options['category'];
+
+        $message = $this->_formatter->format($event);
+        if (!$this->_options['addNewline']) {
+            $message = rtrim($message);
+        }
+
+        $this->_scribe->log($category, $message);
+
+        return true;
+    }
+}
index 65609b8..f36f68d 100644 (file)
@@ -56,6 +56,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
        <file name="Firebug.php" role="php" />
        <file name="Mock.php" role="php" />
        <file name="Null.php" role="php" />
+       <file name="Scribe.php" role="php" />
        <file name="Stream.php" role="php" />
        <file name="Syslog.php" role="php" />
       </dir> <!-- /lib/Horde/Log/Handler -->
@@ -80,6 +81,12 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <channel>pear.horde.org</channel>
    </package>
   </required>
+  <optional>
+   <package>
+    <name>Scribe</name>
+    <channel>pear.horde.org</channel>
+   </package>
+  </optional>
  </dependencies>
  <phprelease>
   <filelist>
@@ -97,6 +104,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
    <install name="lib/Horde/Log/Handler/Firebug.php" as="Horde/Log/Handler/Firebug.php" />
    <install name="lib/Horde/Log/Handler/Mock.php" as="Horde/Log/Handler/Mock.php" />
    <install name="lib/Horde/Log/Handler/Null.php" as="Horde/Log/Handler/Null.php" />
+   <install name="lib/Horde/Log/Handler/Scribe.php" as="Horde/Log/Handler/Scribe.php" />
    <install name="lib/Horde/Log/Handler/Stream.php" as="Horde/Log/Handler/Stream.php" />
    <install name="lib/Horde/Log/Handler/Syslog.php" as="Horde/Log/Handler/Syslog.php" />
    <install name="lib/Horde/Log/Logger.php" as="Horde/Log/Logger.php" />