/** * Default constructor */ public function __construct($env = null) { // register some basic singleton instances $config = Config::getInstance($env, ROUNDCUBE_INSTALL_ROOT . '/config'); $this->set('Config', $config); $this->factories = $config->get('servicemanager.factories', []); // register alias names foreach ($config->get('servicemanager.aliases', []) as $alias => $classname) { $alias = $this->normalizeName($alias); $this->aliases_[$alias] = $classname; $this->aliases[$alias] = $this->normalizeName($classname); } }
/** * Helper method to register log handlers a to the given * Logger instance according to config */ protected static function addHandlers($logger, $name) { $handlers = 0; $config = Config::getInstance(); foreach ((array) $config->get('log.handlers') as $options) { $level = isset($options['level']) ? $options['level'] : $config->get('log.level', Monologger::INFO); $type = isset($options['type']) ? $options['type'] : ''; $handler = null; // skip disabled handlers if (isset($options['enabled']) && !$options['enabled']) { continue; } // skip writer if channel doesn't match if (isset($options['channel']) && !self::channelMatch($name, (array) $options['channel'])) { continue; } // convert log level to a numeric value if (!is_numeric($level) && isset(self::$levels[strtolower($level)])) { $level = self::$levels[strtolower($level)]; } switch ($type) { case 'file': $logdir = Utils::abspath(dirname($options['path']), '/'); $options['path'] = $logdir . basename($options['path']); case 'stream': $handler = new StreamHandler($options['path'], $level); break; case 'cli': if (php_sapi_name() === 'cli-server') { $handler = new StreamHandler('php://stdout', $level); } break; case 'syslog': $identity = isset($options['identity']) ? $options['identity'] : $config->get('log.name', 'roundcube'); $facility = isset($options['facility']) ? $options['facility'] : $config->get('log.facility', 'user'); $handler = new SyslogHandler($identity, $facility, $level); break; default: // TODO: allow full class names and check if implements Monolog\Handler\HandlerInterface } if ($handler) { self::addFormatter($handler, $options); $logger->pushHandler($handler); $handlers++; } } // add null handler if no handlers have been added if ($handlers === 0) { $logger->pushHandler(new NullHandler()); } }