public static function getLogger(Configuration $configuration): LoggerInterface
    {
        $identifier = $configuration->getIdentifier();
        if(isset(self::$_loggers[$identifier])) {
            return self::$_loggers[$identifier]; //just ignore the new configuration
        }
        switch($configuration->getImplementation()) {
            case CsvLogger::class:
            case FileLogger::class:
                $fileName = $configuration->getFileName();
                if(isset(self::$_nameMap[$fileName])) {
                    self::$_loggers[$identifier] =
                        self::$_loggers[self::$_nameMap[$fileName]];
                    break;
                }
                self::$_nameMap[$fileName] = $identifier;
                self::$_loggers[$identifier] = new FileLogger($configuration);
                break;
            default:
                $className = $configuration->getImplementation();
                self::$_loggers[$identifier] = new $className($configuration);
        }
        return self::$_loggers[$identifier];
    }