/**
  * @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;
 }
 /**
  * @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;
 }