From c782ebdcea30aa0156921939ee99299381245cd7 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich <cohosh@torproject.org> Date: Tue, 11 Jun 2019 15:01:05 -0400 Subject: [PATCH] Format output to meet specification Output is now printed out in Tor Directory Protocol Format, as specified in https://trac.torproject.org/projects/tor/ticket/21315#comment:19. --- broker/broker.go | 2 +- broker/metrics.go | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/broker/broker.go b/broker/broker.go index 971e3ad0..3795f2b4 100644 --- a/broker/broker.go +++ b/broker/broker.go @@ -292,7 +292,7 @@ func main() { metricsFile = os.Stdout } - metricsLogger := log.New(metricsFile, "", log.LstdFlags|log.LUTC) + metricsLogger := log.New(metricsFile, "", 0) ctx := NewBrokerContext(metricsLogger) diff --git a/broker/metrics.go b/broker/metrics.go index 2c798ee0..a7f077a4 100644 --- a/broker/metrics.go +++ b/broker/metrics.go @@ -14,7 +14,7 @@ var ( once sync.Once ) -const metricsResolution = 24 * time.Hour +const metricsResolution = 86400 * time.Second type CountryStats struct { counts map[string]int @@ -34,7 +34,11 @@ type Metrics struct { } func (s CountryStats) Display() string { - return fmt.Sprint(s.counts) + output := "" + for cc, count := range s.counts { + output += fmt.Sprintf("%s=%d,", cc, count) + } + return output } func (m *Metrics) UpdateCountryStats(addr string) { @@ -111,11 +115,11 @@ func (m *Metrics) logMetrics() { heartbeat := time.Tick(metricsResolution) for range heartbeat { - m.logger.Println("snowflake-stats-end ") - m.logger.Println("snowflake-ips ", m.countryStats.Display()) - m.logger.Println("snowflake-idle-count ", binCount(m.proxyIdleCount)) - m.logger.Println("client-denied-count ", binCount(m.clientDeniedCount)) - m.logger.Println("client-snowflake-match-count ", binCount(m.clientProxyMatchCount)) + m.logger.Println("snowflake-stats-end", time.Now().UTC().Format("2006-01-02 15:04:05"), "(", int(metricsResolution.Seconds()), "s)") + m.logger.Println("snowflake-ips", m.countryStats.Display()) + m.logger.Println("snowflake-idle-count", binCount(m.proxyIdleCount)) + m.logger.Println("client-denied-count", binCount(m.clientDeniedCount)) + m.logger.Println("client-snowflake-match-count", binCount(m.clientProxyMatchCount)) //restore all metrics to original values m.proxyIdleCount = 0 -- GitLab