/** * @param array $config * @return array * @throws InvalidConfigurationException */ private static function validateAndNormaliseConfig(array $config) { if (!isset($config['name'])) { throw InvalidConfigurationException::missing('name', 'string'); } if (!is_string($config['name'])) { throw InvalidConfigurationException::invalidType('name', $config['name'], 'string'); } if (!isset($config['handlers'])) { throw InvalidConfigurationException::missing('handlers', 'string'); } if (!is_string($config['handlers'])) { throw InvalidConfigurationException::invalidType('handlers', $config['handlers'], 'comma-separated string'); } if (!isset($config['handler'])) { $config['handler'] = array(); } elseif (!is_array($config['handler'])) { throw InvalidConfigurationException::invalidType('handler', $config['handler'], 'array of handler configurations'); } foreach ($config['handler'] as $name => $handlerConfig) { $config['handler'][$name] = self::validateAndNormaliseSubTypeConfig('handler', $name, $handlerConfig); InvalidConfigurationException::assertIsValidFactory($config['handler'][$name]['factory'], 'EngineBlock_Log_Monolog_Handler_HandlerFactory'); } if (!isset($config['processor'])) { $config['processor'] = array(); } elseif (!is_array($config['processor'])) { throw InvalidConfigurationException::invalidType('processor', $config['processor'], 'array of processor configurations'); } foreach ($config['processor'] as $name => $processorConfig) { $config['processor'][$name] = self::validateAndNormaliseSubTypeConfig('processor', $name, $processorConfig); InvalidConfigurationException::assertIsValidFactory($config['processor'][$name]['factory'], 'EngineBlock_Log_Monolog_Processor_ProcessorFactory'); } return $config; }
/** * @param array $config * @return array * @throws InvalidConfigurationException */ private static function validateAndNormaliseConfig(array $config) { if (!isset($config['ident'])) { throw InvalidConfigurationException::missing('ident', 'string'); } if (!is_string($config['ident'])) { throw InvalidConfigurationException::invalidType('ident', $config['ident'], 'string'); } if (!isset($config['min_level'])) { $config['min_level'] = PsrLogLevel::DEBUG; } elseif (!is_string($config['min_level'])) { throw InvalidConfigurationException::invalidType('min_level', $config['min_level'], 'string'); } $config['min_level'] = strtolower($config['min_level']); if (!LogLevel::isValid($config['min_level'])) { throw new InvalidConfigurationException(sprintf("'min_level' is not a valid log level string, '%s' given", $config['min_level'])); } if (!isset($config['formatter']['factory'])) { throw InvalidConfigurationException::missing("formatter.factory", 'string'); } if (!is_string($config['formatter']['factory'])) { throw InvalidConfigurationException::invalidType("formatter.factory", $config['formatter']['factory'], 'string'); } InvalidConfigurationException::assertIsValidFactory($config['formatter']['factory'], 'EngineBlock_Log_Monolog_Formatter_FormatterFactory'); if (!isset($config['formatter']['conf'])) { $config['formatter']['conf'] = array(); } elseif (!is_array($config['formatter']['conf'])) { throw InvalidConfigurationException::invalidType("formatter.conf", $config['formatter']['factory'], 'array'); } return $config; }
/** * @param array $config * @return array * @throws InvalidConfigurationException */ private static function validateAndNormaliseConfig(array $config) { if (!isset($config['handler'])) { throw InvalidConfigurationException::missing('handler', 'string'); } if (!is_string($config['handler'])) { throw InvalidConfigurationException::invalidType('handler', $config['ident'], 'string'); } if (!isset($config['passthru_level'])) { $config['passthru_level'] = null; } elseif (!is_string($config['passthru_level'])) { throw InvalidConfigurationException::invalidType('passthru_level', $config['passthru_level'], 'string'); } else { $config['passthru_level'] = strtolower($config['passthru_level']); if (!LogLevel::isValid($config['passthru_level'])) { throw new InvalidConfigurationException(sprintf("'passthru_level' is not a valid log level string, '%s' given", $config['passthru_level'])); } } if (!isset($config['activation_strategy']['factory'])) { throw InvalidConfigurationException::missing("activation_strategy.factory", 'string'); } if (!is_string($config['activation_strategy']['factory'])) { throw InvalidConfigurationException::invalidType("activation_strategy.factory", $config['activation_strategy']['factory'], 'string'); } InvalidConfigurationException::assertIsValidFactory($config['activation_strategy']['factory'], 'EngineBlock_Log_Monolog_Handler_FingersCrossed_ActivationStrategyFactory'); if (!isset($config['activation_strategy']['conf'])) { $config['activation_strategy']['conf'] = array(); } elseif (!is_array($config['activation_strategy']['conf'])) { throw InvalidConfigurationException::invalidType("activation_strategy.conf", $config['activation_strategy']['factory'], 'array'); } return $config; }
protected function _bootstrapLogging() { $configuration = $this->_application->getConfiguration(); if (!isset($configuration->logger)) { throw new EngineBlock_Exception("No logger configuration defined! Logging is required, please configure the logger under the logger " . "key in your application.ini. See EngineBlock_Log_MonologLoggerFactory's docblock for more details.", EngineBlock_Exception::CODE_ALERT); } $loggerConfiguration = $configuration->logger->toArray(); /** @var string|EngineBlock_Log_LoggerFactory $loggerFactory */ $loggerFactory = $loggerConfiguration['factory']; EngineBlock_Log_InvalidConfigurationException::assertIsValidFactory($loggerFactory, 'EngineBlock_Log_LoggerFactory'); $logger = $loggerFactory::factory($loggerConfiguration['conf'], $configuration->debug); $this->_application->setLogInstance($logger); $this->_application->setLogRequestId(uniqid()); }