private void printTaskAttempt(TaskReport[] tasks) {
    String errinfo[];

    for (TaskReport task : tasks) {
      StringBuilder sb = new StringBuilder();
      StringBuilder attempt = new StringBuilder();

      float progress = task.getProgress();

      java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
      java.util.Date dt = new java.util.Date(task.getStartTime());
      String sDateTime = sdf.format(dt);
      dt = new java.util.Date(task.getFinishTime());
      String eDateTime = sdf.format(dt);

      sb.append(task.getTaskId());

      if (task.getCurrentStatus() == TIPStatus.COMPLETE) {
        attempt.append(task.getSuccessfulTaskAttemptId());
      } else if (task.getCurrentStatus() == TIPStatus.RUNNING) {
        for (TaskAttemptID t : task.getRunningTaskAttemptIds()) {
          if (attempt == null || attempt.length() == 0) attempt.append(t);
          else attempt.append("," + t);
        }

        if (attempt == null || attempt.length() == 0) {
          attempt.append(task.getTaskId().replace("task", "attempt") + "_0-");
        }
      }

      sb.append("|" + attempt.toString());
      sb.append("|" + (progress == 1 ? "100%" : String.format("%.2f%%", progress * 100)));
      sb.append("|" + sDateTime);
      sb.append("|" + eDateTime);
      sb.append(
          "|" + String.format("% 8.3fs", (task.getFinishTime() - task.getStartTime()) / 1000.0));

      System.out.println(sb.toString());

      errinfo = task.getDiagnostics();
      if (errinfo.length > 0 && !errinfo[0].isEmpty()) {
        for (String info : errinfo) System.out.println(info);
      }
    }
  }