public RackLogger getLogger() {
        if (logger == null) {
            String loggerClass = getLoggerClassName();
            if ( "stdout".equalsIgnoreCase(loggerClass) ) {
                logger = new OutputStreamLogger(getOut());
            }
            else if ( "stderr".equalsIgnoreCase(loggerClass) ) {
                logger = new OutputStreamLogger(getErr());
            }
            else {
                final Map<String, String> loggerTypes = getLoggerTypes();
                final String loggerKey = loggerClass.toLowerCase();
                if (loggerTypes.containsKey(loggerKey)) {