static public TimerTask logStats()

in simulator/src/main/java/com/google/cloud/StatsTracker.java [211:251]


  static public TimerTask logStats(int freq, Stats... stats) {

    // Logger for the stats
    // TODO: Log to a logger, rather than stdout
    TimerTask logger = new TimerTask() {
      boolean hasRunBefore = false;
      @Override
      public void run() {

        // Print the header if necessary
        if (!hasRunBefore) {
          ArrayList<String> hdrs = new ArrayList<String>();
          for (Stats stat : stats) {
            hdrs.add(stat.statsHeader());
          }
          System.out.println(String.join(" ", hdrs));
          hasRunBefore = true;
        }

        // Print main stats
        ArrayList<String> ostats = new ArrayList<String>();
        for (Stats stat : stats) {
          ostats.add(stat.stats(true));
        }
        System.out.println(String.join(" ", ostats));
      }
    };

    // Get name of timer
    ArrayList<String> names = new ArrayList<String>();
    for (Stats stat : stats) {
      names.add(stat.getName());
    }
    String name = "logger:" + String.join(":", names);

    // Create timer and scheduler work
    Timer timer = new Timer(name, true);
    timer.scheduleAtFixedRate(logger, freq * 1000, freq * 1000);

    return logger;
  }