From a54b1740d03ab748f86ff7fed966a686b1ea8f85 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Fri, 19 Mar 2010 15:02:25 -0600 Subject: [PATCH] Allow log output format (for stream logs) to be defined in horde config --- framework/Core/lib/Horde/Core/Binder/Logger.php | 67 +++++++++++++++--------- framework/Log/lib/Horde/Log/Formatter/Simple.php | 7 ++- horde/config/conf.xml | 20 +++++++ 3 files changed, 69 insertions(+), 25 deletions(-) diff --git a/framework/Core/lib/Horde/Core/Binder/Logger.php b/framework/Core/lib/Horde/Core/Binder/Logger.php index 42c921cfb..5d6c75a1f 100644 --- a/framework/Core/lib/Horde/Core/Binder/Logger.php +++ b/framework/Core/lib/Horde/Core/Binder/Logger.php @@ -6,41 +6,60 @@ class Horde_Core_Binder_Logger implements Horde_Injector_Binder global $conf; /* Default handler. */ - $handler = new Horde_Log_Handler_Null(); - - // Try to make sure that we can log messages somehow. - if (!empty($conf['log']['enabled'])) { - switch ($conf['log']['type']) { - case 'file': - try { - $handler = new Horde_Log_Handler_Stream($conf['log']['name'], $conf['log']['params']['append'] ? 'a+' : 'w+'); - } catch (Horde_Log_Exception $e) {} + if (empty($conf['log']['enabled'])) { + return new Horde_Log_Logger(new Horde_Log_Handler_Null()); + } + + switch ($conf['log']['type']) { + case 'file': + case 'stream': + $append = ($conf['log']['type'] == 'file') + ? ($conf['log']['params']['append'] ? 'a+' : 'w+') + : null; + + switch ($conf['log']['params']['format']) { + case 'custom': + $formatter = new Horde_Log_Formatter_Xml(array('format' => $conf['log']['params']['template'])); break; - case 'stream': - try { - $handler = new Horde_Log_Handler_Stream($conf['log']['name']); - } catch (Horde_Log_Exception $e) {} + case 'default': + // Use Horde_Log defaults. + $formatter = null; break; - case 'syslog': - try { - $handler = new Horde_Log_Handler_Syslog(); - } catch (Horde_Log_Exception $e) {} + case 'xml': + $formatter = new Horde_Log_Formatter_Xml(); break; + } - // case 'null': - // default: - // // Use default null handler. - // break; + try { + $handler = new Horde_Log_Handler_Stream($conf['log']['name'], $append, $formatter); + } catch (Horde_Log_Exception $e) { + return new Horde_Log_Logger(new Horde_Log_Handler_Null()); } + break; - if (!is_string($conf['log']['priority'])) { - $conf['log']['priority'] = 'NOTICE'; + case 'syslog': + try { + $handler = new Horde_Log_Handler_Syslog(); + } catch (Horde_Log_Exception $e) { + return new Horde_Log_Logger(new Horde_Log_Handler_Null()); } - $handler->addFilter(constant('Horde_Log::' . $conf['log']['priority'])); + break; + + case 'null': + default: + // Use default null handler. + return new Horde_Log_Logger(new Horde_Log_Handler_Null()); + break; + } + + if (!is_string($conf['log']['priority'])) { + $conf['log']['priority'] = 'NOTICE'; } + $handler->addFilter(constant('Horde_Log::' . $conf['log']['priority'])); + /* Horde_Core_Log_Logger contains code to format the log message. */ return new Horde_Core_Log_Logger($handler); } diff --git a/framework/Log/lib/Horde/Log/Formatter/Simple.php b/framework/Log/lib/Horde/Log/Formatter/Simple.php index 939f6a5f1..7be521ce5 100644 --- a/framework/Log/lib/Horde/Log/Formatter/Simple.php +++ b/framework/Log/lib/Horde/Log/Formatter/Simple.php @@ -32,7 +32,12 @@ class Horde_Log_Formatter_Simple protected $_format; /** - * Constructor + * Constructor. + * + * @param array $options Configuration Options: + *
+     * 'format' - (string) The log template.
+     * 
*/ public function __construct($options = null) { diff --git a/horde/config/conf.xml b/horde/config/conf.xml index f1def9a67..98f86cc47 100644 --- a/horde/config/conf.xml +++ b/horde/config/conf.xml @@ -753,12 +753,32 @@ true + default + + + + + + + + default + + + + + + + -- 2.11.0