*/
class Horde_Core_Factory_Logger
{
+ /**
+ * Stores the exception if the logger could not be started.
+ *
+ * @var Horde_Log_Exception
+ */
+ public $error;
+
+ /**
+ */
public function create(Horde_Injector $injector)
{
global $conf;
+ $this->error = null;
+
/* Default handler. */
if (empty($conf['log']['enabled'])) {
return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
try {
$handler = new Horde_Log_Handler_Stream($conf['log']['name'], $append, $formatter);
} catch (Horde_Log_Exception $e) {
+ $this->error = $e;
return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
}
break;
$handler->setOption('ident', $conf['log']['ident']);
}
} catch (Horde_Log_Exception $e) {
+ $this->error = $e;
return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
}
break;
default:
// Use default null handler.
return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
- break;
}
if (!defined('Horde_Log::' . $conf['log']['priority'])) {
}
$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);
+ try {
+ /* Horde_Core_Log_Logger contains code to format the log
+ * message. */
+ return new Horde_Core_Log_Logger($handler);
+ } catch (Horde_Log_Exception $e) {
+ $this->error = $e;
+ return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
+ }
}
}
*/
public function setAuth($authId, $credentials, array $options = array())
{
- global $session;
+ global $browser, $injector, $session;
$app = empty($options['app'])
? 'horde'
}
$session->set('horde', 'auth/authId', $authId);
- $session->set('horde', 'auth/browser', $GLOBALS['browser']->getAgentString());
+ $session->set('horde', 'auth/browser', $browser->getAgentString());
if (!empty($options['change'])) {
$session->set('horde', 'auth/change', 1);
}
/* Reload preferences for the new user. */
unset($GLOBALS['prefs']);
- $GLOBALS['injector']->getInstance('Horde_Core_Factory_Prefs')->clearCache();
+ $injector->getInstance('Horde_Core_Factory_Prefs')->clearCache();
$this->loadPrefs();
$this->setLanguageEnvironment(isset($options['language']) ? $options['language'] : null, $app);
+
+ /* If an admin, check for logger errors. */
+ if ($this->isAdmin()) {
+ // Do this to ensure Logger object was initialized.
+ $injector->getInstance('Horde_Log_Logger');
+
+ if ($error = $injector->getInstance('Horde_Core_Factory_Logger')->error) {
+ $injector->getInstance('Horde_Notification')->push($error, 'horde.warning');
+ }
+ }
}
/**
--- /dev/null
+#!/usr/bin/env php
+<?php
+/**
+ * This script verifies that the logger was initialized without errors.
+ *
+ * Copyright 2011 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @author Michael Slusarz <slusarz@horde.org>
+ * @category Horde
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @package Horde
+ */
+
+require_once dirname(__FILE__) . '/../lib/Application.php';
+Horde_Registry::appInit('horde', array(
+ 'authentication' => 'none',
+ 'cli' => true
+));
+
+// Ensure Logger object was initialized.
+$injector->getInstance('Horde_Log_Logger');
+
+if ($error = $injector->getInstance('Horde_Core_Factory_Logger')->error) {
+ $cli->fatal($error);
+} else {
+ $cli->message('Logger successfully loaded', 'cli.success');
+ Horde::logMessage('Test log message.');
+ $cli->message('Sent test log message.');
+}