code: public static Logger getLogger(final Class<?> c) {
  		if (loggers.get(c) == null) {
  			//System.out.println("Making new logger for " + c.getSimpleName());
  			final Logger logger = Logger.getLogger(c.getSimpleName());
  			loggers.put(c, logger);
  			for(Handler h : logger.getParent().getHandlers()) { logger.getParent().removeHandler(h); }
  			ConsoleHandler h = new ConsoleHandler();
  			h.setFormatter(getFormatter(logger,false));
  			h.setLevel(Level.ALL);
  			logger.addHandler(h);
  			if (tempLevels.keySet().contains(c)) {
  				logger.setLevel(tempLevels.get(c));
  				tempLevels.remove(c);
  			}
  			if (logDir != null) {
  				try {
  					FileHandler fh = new FileHandler(logDir+File.separator+c.getSimpleName()+".log");
  					fh.setFormatter(getFormatter(logger,true));
  					logger.addHandler(fh);
  				}
  				catch (SecurityException e) { e.printStackTrace(); }
  				catch (IOException e) { e.printStackTrace(); }
  			}
  			if (globalLevel != null) logger.setLevel(globalLevel);
  			return logger;
  		}
  		//System.out.println("Returning old logger for " + c.getSimpleName());
  		return loggers.get(c);
  	}
docs: Provides a reference to a {@link Logger} which will format log messages according to
  the common MetaCSP Framework formatting.
  @param c The class within which the logger should be used.
  @return A {@link Logger} that can be used to log messages in the given class.