Horde_Core_Factory_Logger::create PHP Method

create() public method

public create ( Horde_Injector $injector )
$injector Horde_Injector
    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());
        }
        switch ($conf['log']['type']) {
            case 'file':
            case 'stream':
                $append = $conf['log']['type'] == 'file' ? $conf['log']['params']['append'] ? 'a+' : 'w+' : null;
                $format = isset($conf['log']['params']['format']) ? $conf['log']['params']['format'] : 'default';
                switch ($format) {
                    case 'custom':
                        $formatter = new Horde_Log_Formatter_Simple(array('format' => $conf['log']['params']['template']));
                        break;
                    case 'default':
                    default:
                        // Use Horde_Log defaults.
                        $formatter = null;
                        break;
                    case 'xml':
                        $formatter = new Horde_Log_Formatter_Xml();
                        break;
                }
                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());
                }
                try {
                    $handler->setOption('ident', $conf['log']['ident']);
                } catch (Horde_Log_Exception $e) {
                }
                break;
            case 'syslog':
                try {
                    $handler = new Horde_Log_Handler_Syslog();
                    if (!empty($conf['log']['name'])) {
                        $handler->setOption('facility', $conf['log']['name']);
                    }
                    if (!empty($conf['log']['ident'])) {
                        $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;
            case 'null':
            default:
                // Use default null handler.
                return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
        }
        switch ($conf['log']['priority']) {
            case 'WARNING':
                // Bug #12109
                $priority = 'WARN';
                break;
            default:
                $priority = defined('Horde_Log::' . $conf['log']['priority']) ? $conf['log']['priority'] : 'NOTICE';
                break;
        }
        $handler->addFilter(constant('Horde_Log::' . $priority));
        try {
            /* Horde_Core_Log_Logger contains code to format the log
             * message. */
            $ob = new Horde_Core_Log_Logger($handler);
            self::processQueue($ob);
            return $ob;
        } catch (Horde_Log_Exception $e) {
            $this->error = $e;
            return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
        }
    }