func showStats(db *bolt.DB) { // Grab the initial stats. prev := db.Stats() for { // Wait for 10s. time.Sleep(10 * time.Second) // Grab the current stats and diff them. stats := db.Stats() diff := stats.Sub(&prev) // Encode stats to JSON and print to STDERR. json.NewEncoder(os.Stderr).Encode(diff) // Save stats for the next loop. prev = stats } }
// Continuously prints stats on the database at given intervals. func printStats(db *bolt.DB, interval time.Duration) { var prevStats = db.Stats() var encoder = json.NewEncoder(os.Stdout) for { // Wait for the stats interval. time.Sleep(interval) // Retrieve new stats and find difference from previous iteration. var stats = db.Stats() var diff = stats.Sub(&prevStats) // Print as JSON to STDOUT. if err := encoder.Encode(diff); err != nil { fatal(err) } // Save stats for next iteration. prevStats = stats } }