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;
}