private void transformLogs()

in src/main/java/com/googlesource/gerrit/plugins/auditsl4j/TransformLogsCommand.java [109:148]


  private void transformLogs(
      String currentDateString,
      String fileType,
      Function<String, Optional<? extends TransformableLog>> createTransformable) {
    // Log format example: httpd_log.2019-01-19.gz
    String logFileName = sitePaths.logs_dir + "/" + fileType + "." + currentDateString + ".gz";
    String auditLogFileName = sitePaths.logs_dir + "/audit_log." + currentDateString + ".log";

    stdout.print("Transforming: " + logFileName + " => " + auditLogFileName + " ...\n");
    stdout.flush();

    try {
      GZIPInputStream gzis = new GZIPInputStream(new FileInputStream(logFileName));
      BufferedReader input = new BufferedReader(new InputStreamReader(gzis));

      PrintWriter pw =
          new PrintWriter(
              Files.newBufferedWriter(
                  Paths.get(auditLogFileName),
                  StandardOpenOption.CREATE,
                  StandardOpenOption.WRITE,
                  StandardOpenOption.APPEND));

      input
          .lines()
          .map(createTransformable)
          .map(
              maybeTransformableLog ->
                  maybeTransformableLog.flatMap(
                      transformableLog -> transformableLog.toAuditLog(loggerAudit)))
          .filter(Optional::isPresent)
          .map(Optional::get)
          .forEach(pw::println);
      pw.flush();
    } catch (FileNotFoundException fnfe) {
      stderr.print("Cannot find '" + logFileName + "'. Skipping!\n");
    } catch (IOException e) {
      stderr.print("Error: " + e.getMessage() + "!\n");
    }
  }