public static String getLatestLines(File file) throws IOException {
    long s = System.currentTimeMillis();
    BufferedReader br = null;
    List<String> list = new ArrayList<>();
    StringBuilder sb = new StringBuilder();
    try {
      br = new BufferedReader(new FileReader(file));
      String line;
      while ((line = br.readLine()) != null) {
        list.add(line + "\n");
      }
      int lastIndex = getLastIndex(list);
      for (int i = lastIndex; i < list.size(); i++) {
        sb.append(list.get(i));
      }

    } catch (FileNotFoundException ex) {
      Logger.getLogger(LogfileUtil.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
      try {
        br.close();
      } catch (IOException ex) {
        Logger.getLogger(LogfileUtil.class.getName()).log(Level.SEVERE, null, ex);
      }
    }
    long e = System.currentTimeMillis();
    log.log(
        Level.OFF,
        "Deserialized log file, elapsed: {0} seconds",
        AdministratorServlet.getElapsed(s, e));

    return sb.toString();
  }
  public static String lineByLine(File file) throws IOException {
    long s = System.currentTimeMillis();
    BufferedReader br = null;
    List<String> list = new ArrayList<>();
    StringBuilder sb = new StringBuilder();
    try {
      br = new BufferedReader(new FileReader(file));
      String line;
      while ((line = br.readLine()) != null) {
        if (list.isEmpty()) {
          String text = stripExtraInfo(line);
          if (text != null) {
            list.add(text);
          }
        } else {
          String text = stripExtraInfo(line);
          if (text != null) {
            list.add(list.size() - 1, text);
          }
        }
      }
      for (String string : list) {
        sb.append(string).append("\n");
      }
      return sb.toString();

    } catch (FileNotFoundException ex) {
      Logger.getLogger(LogfileUtil.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
      try {
        br.close();
      } catch (IOException ex) {
        Logger.getLogger(LogfileUtil.class.getName()).log(Level.SEVERE, null, ex);
      }
    }
    long e = System.currentTimeMillis();
    log.log(
        Level.OFF,
        "Deserialized log file, elapsed: {0} seconds",
        AdministratorServlet.getElapsed(s, e));

    return sb.toString();
  }