@Override
 protected void publish(LogEntry entry) {
   Level level = levelMap.get(entry.getLevel());
   if (level == null) {
     level = Level.INFO;
   }
   this.handle.log(
       level, DefaultFormat.parseArgs(entry.getMessage(), entry.getArgs()), entry.getThrowable());
 }
 public void writeEntry(LogEntry logEntry, StringBuilder builder) {
   String message = String.valueOf(logEntry.getMessage());
   Map<String, Object> map = new HashMap<String, Object>();
   if (logEntry.hasArgs()) {
     message = DefaultFormat.parseArgs(message, logEntry.getArgs());
   }
   map.put("msg", message);
   map.put("date", dateFormat.format(logEntry.getDate()));
   map.put("level", logEntry.getLevel().getName());
   builder.append(MACRO_PROCESSOR.process(format, map)).append("\n");
   writeThrowable(logEntry, builder);
 }