function $AdfLogger$$($loggerName$$, $logWriter$$, $level$$9$$) {
  this.Init($loggerName$$, $logWriter$$, $level$$9$$);
}
$goog$exportSymbol$$("AdfLogger", $AdfLogger$$);
$AdfObject$$.$createSubclass$($AdfLogger$$);
$AdfLogger$$.$getLogger$ = function $$AdfLogger$$$$getLogger$$($loggerName$$1$$) {
  $loggerName$$1$$ || (loggername = "global");
  return $AdfLogger$$.$_LOGGERS$[$loggerName$$1$$];
};
$goog$exportSymbol$$("AdfLogger.getLogger", $AdfLogger$$.$getLogger$);
$AdfLogger$$.prototype.register = function $$AdfLogger$$$$register$() {
  var $loggers$$ = $AdfLogger$$.$_LOGGERS$, $loggerName$$2$$ = this.getName(), $oldLogger$$1$$ = $loggers$$[$loggerName$$2$$];
  if (this !== $oldLogger$$1$$) {
    if ($oldLogger$$1$$) {
      var $oldLogWriter$$ = $oldLogger$$1$$.$getLogWriter$();
      $AdfBufferedLogWriter$$.prototype.isPrototypeOf($oldLogWriter$$) && this.$logRecords$($oldLogWriter$$.$getLogRecords$());
      $oldLogWriter$$.close();
    }
    $loggers$$[$loggerName$$2$$] = this;
  }
  return $oldLogger$$1$$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.register", {register:$AdfLogger$$.prototype.register});
$AdfLogger$$.prototype.getName = function $$AdfLogger$$$$getName$() {
  return this.$_loggerName$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.getName", {getName:$AdfLogger$$.prototype.getName});
$AdfLogger$$.prototype.$setLevel$ = function $$AdfLogger$$$$$setLevel$$($level$$10$$) {
  $AdfAssert$$.$assertNumeric$($level$$10$$);
  this.$_level$ = $level$$10$$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.setLevel", {$setLevel$:$AdfLogger$$.prototype.$setLevel$});
$AdfLogger$$.prototype.getLevel = function $$AdfLogger$$$$getLevel$() {
  return this.$_level$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.getLevel", {getLevel:$AdfLogger$$.prototype.getLevel});
$AdfLogger$$.prototype.$isLoggable$ = function $$AdfLogger$$$$$isLoggable$$($level$$11$$) {
  return $level$$11$$ >= this.$_level$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.isLoggable", {$isLoggable$:$AdfLogger$$.prototype.$isLoggable$});
$AdfLogger$$.prototype.getName = function $$AdfLogger$$$$getName$() {
  return this.$_loggerName$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.getName", {getName:$AdfLogger$$.prototype.getName});
$AdfLogger$$.prototype.$getLogWriter$ = function $$AdfLogger$$$$$getLogWriter$$() {
  return this.$_logWriter$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.getLogWriter", {$getLogWriter$:$AdfLogger$$.prototype.$getLogWriter$});
$AdfLogger$$.prototype.setFilter = function $$AdfLogger$$$$setFilter$($newFilter$$1$$) {
  $AdfAssert$$.$assertFunctionOrNull$($newFilter$$1$$);
  this.$_filter$ = $newFilter$$1$$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.setFilter", {setFilter:$AdfLogger$$.prototype.setFilter});
$AdfLogger$$.prototype.getFilter = function $$AdfLogger$$$$getFilter$() {
  return this.$_filter$;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.getFilter", {getFilter:$AdfLogger$$.prototype.getFilter});
$AdfLogger$$.prototype.log = function $$AdfLogger$$$$log$($logRecord$$5$$) {
  $AdfAssert$$.assert($logRecord$$5$$);
  $logRecord$$5$$.level < this.$_level$ || this.$AddLogRecord$($logRecord$$5$$);
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.log", {log:$AdfLogger$$.prototype.log});
$AdfLogger$$.prototype.$logRecords$ = function $$AdfLogger$$$$$logRecords$$($logRecords$$1$$) {
  $AdfAssert$$.assert($logRecords$$1$$);
  for (var $recordCount$$1$$ = $logRecords$$1$$.length, $i$$61$$ = 0;$i$$61$$ < $recordCount$$1$$;$i$$61$$++) {
    this.log($logRecords$$1$$[$i$$61$$]);
  }
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.logRecords", {$logRecords$:$AdfLogger$$.prototype.$logRecords$});
$AdfLogger$$.prototype.$logMessage$ = function $$AdfLogger$$$$$logMessage$$($level$$13$$, $messages$$6$$) {
  $AdfAssert$$.$assertNumeric$($level$$13$$);
  $level$$13$$ < this.$_level$ || (this.$_calcMsg$._skipArgs = 1, this.$AddLogRecord$(new $AdfLogRecord$$($level$$13$$, this.$_calcMsg$.apply(this, arguments))));
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.logMessage", {$logMessage$:$AdfLogger$$.prototype.$logMessage$});
$AdfLogger$$.prototype.$logError$ = function $$AdfLogger$$$$$logError$$($error$$8$$, $level$$14$$, $message$$41$$) {
  $level$$14$$ || ($level$$14$$ = $AdfLogger$$.INFO);
  $AdfAssert$$.$assertNumeric$($level$$14$$);
  $level$$14$$ < this.$_level$ || (this.$_calcMsg$._skipArgs = 2, $message$$41$$ = this.$_calcMsg$.apply(this, arguments), this.$AddLogRecord$(new $AdfLogRecord$$($level$$14$$, $message$$41$$, $error$$8$$)));
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.logError", {$logError$:$AdfLogger$$.prototype.$logError$});
$AdfLogger$$.prototype.$logErrorAsSevere$ = function $$AdfLogger$$$$$logErrorAsSevere$$($error$$9$$, $message$$42$$) {
  var $level$$15$$ = $AdfLogger$$.SEVERE;
  $level$$15$$ < this.$_level$ || (this.$_calcMsg$._skipArgs = 1, $message$$42$$ = this.$_calcMsg$.apply(this, arguments), this.$AddLogRecord$(new $AdfLogRecord$$($level$$15$$, $message$$42$$, $error$$9$$)));
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.logErrorAsSevere", {$logErrorAsSevere$:$AdfLogger$$.prototype.$logErrorAsSevere$});
$AdfLogger$$.prototype.$logErrorAsWarning$ = function $$AdfLogger$$$$$logErrorAsWarning$$($error$$10$$, $message$$43$$) {
  var $level$$16$$ = $AdfLogger$$.WARNING;
  $level$$16$$ < this.$_level$ || (this.$_calcMsg$._skipArgs = 1, $message$$43$$ = this.$_calcMsg$.apply(this, arguments), this.$AddLogRecord$(new $AdfLogRecord$$($level$$16$$, $message$$43$$, $error$$10$$)));
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.logErrorAsWarning", {$logErrorAsWarning$:$AdfLogger$$.prototype.$logErrorAsWarning$});
$AdfLogger$$.prototype.$logErrorAsInfo$ = function $$AdfLogger$$$$$logErrorAsInfo$$($error$$11$$, $message$$44$$) {
  var $level$$17$$ = $AdfLogger$$.INFO;
  $level$$17$$ < this.$_level$ || (this.$_calcMsg$._skipArgs = 1, $message$$44$$ = this.$_calcMsg$.apply(this, arguments), this.$AddLogRecord$(new $AdfLogRecord$$($level$$17$$, $message$$44$$, $error$$11$$)));
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.logErrorAsInfo", {$logErrorAsInfo$:$AdfLogger$$.prototype.$logErrorAsInfo$});
$AdfLogger$$.prototype.$logElapsedTime$ = function $$AdfLogger$$$$$logElapsedTime$$($startTime$$7$$, $message$$45$$, $level$$18$$) {
  $AdfAssert$$.assert($startTime$$7$$);
  $level$$18$$ || ($level$$18$$ = this.FINE);
  if (!($level$$18$$ < this.$_level$)) {
    var $now$$ = new Date;
    $message$$45$$ += ($now$$.getTime() - $startTime$$7$$.getTime()) / 1E3 + " seconds";
    this.$AddLogRecord$(new $AdfLogRecord$$($level$$18$$, $message$$45$$, null, $now$$));
  }
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.logElapsedTime", {$logElapsedTime$:$AdfLogger$$.prototype.$logElapsedTime$});
$AdfLogger$$.$InitClass$ = function $$AdfLogger$$$$InitClass$$() {
  this.$RegisterLevels$($AdfLogger$$, [{name:"OFF", severity:Number.MAX_VALUE}, {name:"SEVERE", severity:1E3}, {name:"WARNING", severity:900}, {name:"INFO", severity:800}, {name:"CONFIG", severity:700}, {name:"FINE", severity:500}, {name:"FINER", severity:400}, {name:"FINEST", severity:300}, {name:"ALL", severity:Number.MIN_VALUE}]);
  this.DEFAULT_LEVEL = this.WARNING;
  this.$_LOGGERS$ = {};
};
$goog$exportSymbol$$("AdfLogger.InitClass", $AdfLogger$$.$InitClass$);
$AdfLogger$$.$RegisterLevels$ = function $$AdfLogger$$$$RegisterLevels$$($ourClass$$2$$, $levelArr$$) {
  $AdfAssert$$.$assertFunction$($ourClass$$2$$);
  var $ourPrototype$$2$$ = $ourClass$$2$$.prototype;
  $ourClass$$2$$.$__reverseMap$ = {};
  for (var $levelCount$$ = $levelArr$$.length, $i$$62$$ = 0;$i$$62$$ < $levelCount$$;$i$$62$$++) {
    var $currLevel_currLevelSeverity$$ = $levelArr$$[$i$$62$$], $currLevelName$$ = $currLevel_currLevelSeverity$$.name, $currLevel_currLevelSeverity$$ = $currLevel_currLevelSeverity$$.severity;
    $ourClass$$2$$.$__reverseMap$[$currLevel_currLevelSeverity$$] = $currLevelName$$;
    $ourClass$$2$$[$currLevelName$$] = $currLevel_currLevelSeverity$$;
    $ourPrototype$$2$$[$currLevelName$$] = $currLevel_currLevelSeverity$$;
    $currLevel_currLevelSeverity$$ != Number.MAX_VALUE && $currLevel_currLevelSeverity$$ != Number.MIN_VALUE && ($ourPrototype$$2$$[$currLevelName$$.toLowerCase()] = function anonymous$$9() {
    });
  }
};
$goog$exportSymbol$$("AdfLogger.RegisterLevels", $AdfLogger$$.$RegisterLevels$);
$AdfLogger$$.prototype.$_calcMsg$ = function $$AdfLogger$$$$$_calcMsg$$($varArgs$$) {
  var $i$$63_startArgIndex$$ = arguments.callee._skipArgs, $argCount$$3$$ = arguments.length, $firstArg_message$$46$$ = arguments[$i$$63_startArgIndex$$];
  if (1 == $argCount$$3$$ - $i$$63_startArgIndex$$ && "string" == typeof $firstArg_message$$46$$) {
    return $firstArg_message$$46$$;
  }
  for ($firstArg_message$$46$$ = "";$i$$63_startArgIndex$$ < $argCount$$3$$;$i$$63_startArgIndex$$++) {
    $firstArg_message$$46$$ += arguments[$i$$63_startArgIndex$$];
  }
  return $firstArg_message$$46$$;
};
$AdfLogger$$.prototype._calcMsg = $AdfLogger$$.prototype.$_calcMsg$;
$AdfLogger$$.prototype.Init = function $$AdfLogger$$$$Init$($loggerName$$3$$, $logWriter$$1$$, $level$$19$$) {
  $AdfAssert$$.assert($loggerName$$3$$, "loggerName required");
  $AdfAssert$$.assert($logWriter$$1$$, "logWriter required");
  $AdfLogger$$.$superclass$.Init.call(this);
  this.$_logWriter$ = $logWriter$$1$$;
  this.$_loggerName$ = $loggerName$$3$$;
  this.$_level$ = void 0 !== $level$$19$$ ? $level$$19$$ : $AdfLogger$$.DEFAULT_LEVEL;
  this.$_filter$ = null;
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.Init", {Init:$AdfLogger$$.prototype.Init});
$AdfLogger$$.prototype.$toDebugString$ = function $$AdfLogger$$$$$toDebugString$$() {
  return this.getTypeName() + " [loggerName:'" + this.$_loggerName$ + "',level:" + this.$_level$ + ",logWriter:" + this.$_logWriter$ + "]";
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.toDebugString", {$toDebugString$:$AdfLogger$$.prototype.$toDebugString$});
$AdfLogger$$.prototype.$AddLogRecord$ = function $$AdfLogger$$$$$AddLogRecord$$($logRecord$$6$$) {
  var $filter$$6$$ = this.$_filter$;
  $filter$$6$$ && !$filter$$6$$($logRecord$$6$$) || this.$getLogWriter$().$publish$($logRecord$$6$$);
};
$AdfObject$$.$exportPrototypeSymbol$("AdfLogger.prototype.AddLogRecord", {$AddLogRecord$:$AdfLogger$$.prototype.$AddLogRecord$});
$AdfLogger$$.$LOGGER$ = new $AdfLogger$$("global", new $AdfBufferedLogWriter$$);
$goog$exportSymbol$$("AdfLogger.LOGGER", $AdfLogger$$.$LOGGER$);
$AdfLogger$$.$LOGGER$.register();
