docs: function log(level, message) {
              var rawMessage = message;
              level = Level.toLevel(level);
  
              if (this.hasLevelGt(level)) {
                  var args = argsToArray(arguments, 1);
                  if (args.length > 1) {
                      message = format.apply(null, args);
                  }
                  if (Level.TRACE.equals(level)) {
                      var err = new Error;
                      err.name = "Trace";
                      err.message = message || '';
                      Error.captureStackTrace(err, log);
                      message = err.stack;
                  } else if (Level.ERROR.equals(level) && isInstanceOf(message, Error)) {
                      message = message.stack;
                  }
                  var type = level.name.toLowerCase(), appenders = this.__appenders;
                  var event = this.getLogEvent(level, message, rawMessage);
                  Object.keys(appenders).forEach(function (i) {
                      appenders[i].append(event);
                  });
              }
              return this;
          }