anchor.diff:   * filter out any sensitive data specific to the current application or organization, such as credit 
    * cards, social security numbers, etc.  
    */
  -component extends="cfesapi.org.owasp.esapi.lang.Object" implements="cfesapi.org.owasp.esapi.Logger" {
  +component JavaLogger extends="cfesapi.org.owasp.esapi.lang.Object" implements="cfesapi.org.owasp.esapi.Logger" {
   
   	instance.ESAPI = "";
   
  
positive.code: 	private function convertESAPILeveltoLoggerLevel(required numeric level) {
  	
  		// ACF: use of Logger constants in case statements causes "This expression must have a constant value. " error
  		switch(arguments.level) {
  			case 2147483647: //Logger.OFF:
  				return newJava("java.util.logging.Level").OFF;
  			case 1000: //Logger.FATAL:
  				return newJava("java.util.logging.Level").SEVERE;
  			case 800: //Logger.ERROR:
  				return newJava("org.owasp.esapi.reference.JavaLogFactory$JavaLoggerLevel").ERROR_LEVEL;// This is a custom level.
  			case 600: //Logger.WARNING:
  				return newJava("java.util.logging.Level").WARNING;
  			case 400: //Logger.INFO:
  				return newJava("java.util.logging.Level").INFO;
  			case 200: //Logger.DEBUG:
  				return newJava("java.util.logging.Level").FINE;
  			case 100: //Logger.TRACE:
  				return newJava("java.util.logging.Level").FINEST;
  			case -2147483648: //Logger.ALL:
  				return newJava("java.util.logging.Level").ALL;
  			default: {
  				throwError(newJava("java.lang.IllegalArgumentException").init("Invalid logging level. Value was: " & arguments.level));
  
negative.code: 		}
  	
  		// log the message
  		if(!isNull(arguments.throwable) && isInstanceOf(arguments.throwable, "java.lang.Exception")) {
  			instance.jlogger.log(arguments.level, "[" & local.typeInfo & getUserInfo() & " -> " & local.appInfo & "] " & local.clean, arguments.throwable);
  		}
  		else {
  			instance.jlogger.log(arguments.level, "[" & local.typeInfo & getUserInfo() & " -> " & local.appInfo & "] " & local.clean);
  		}
  	}
  	
  