/**
  * @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;
 }
 private static function validateAndNormaliseConfig(array $config)
 {
     if (!isset($config['format'])) {
         $config['format'] = null;
     } elseif (!is_string($config['format'])) {
         throw InvalidConfigurationException::invalidType('format', $config['format'], 'string');
     }
     return $config;
 }
 /**
  * @param array $config
  * @return array
  * @throws InvalidConfigurationException
  */
 private static function validateAndNormaliseConfig(array $config)
 {
     if (!isset($config['action_level'])) {
         throw InvalidConfigurationException::missing('action_level', 'string');
     }
     if (!is_string($config['action_level'])) {
         throw InvalidConfigurationException::invalidType('action_level', $config['action_level'], 'string');
     }
     $config['action_level'] = strtolower($config['action_level']);
     if (!LogLevel::isValid($config['action_level'])) {
         throw new InvalidConfigurationException(sprintf("'action_level' is not a valid log level string, '%s' given", $config['action_level']));
     }
     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());
 }
 /**
  * @param string $typeKey
  * @param string $name
  * @param mixed  $config
  * @return array
  * @throws EngineBlock_Log_InvalidConfigurationException
  */
 private static function validateAndNormaliseSubTypeConfig($typeKey, $name, $config)
 {
     if (!is_array($config)) {
         throw InvalidConfigurationException::invalidType("{$typeKey}.{$name}", $config, 'array');
     }
     if (!isset($config['factory'])) {
         throw InvalidConfigurationException::missing("{$typeKey}.{$name}.factory", 'string');
     } elseif (!is_string($config['factory'])) {
         throw InvalidConfigurationException::invalidType("{$typeKey}.{$name}.factory", $config['factory'], 'string');
     }
     if (!isset($config['conf'])) {
         $config['conf'] = array();
     } elseif (!is_array($config['conf'])) {
         throw InvalidConfigurationException::invalidType("{$typeKey}.{$name}.conf", $config['factory'], 'array');
     }
     return $config;
 }