From 43538243995267c417983360d226d6e8eb181139 Mon Sep 17 00:00:00 2001 From: mishaz Date: Tue, 10 Feb 2015 02:11:34 +0000 Subject: [PATCH] Moved some logging code from datamananager to loggerutil. --- services/datamanager/datamanager.go | 29 ++-------------- services/datamanager/loggerutil/loggerutil.go | 33 +++++++++++++++++++ 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/services/datamanager/datamanager.go b/services/datamanager/datamanager.go index f63f4628a0..bd68db112a 100644 --- a/services/datamanager/datamanager.go +++ b/services/datamanager/datamanager.go @@ -9,9 +9,8 @@ import ( "git.curoverse.com/arvados.git/sdk/go/util" "git.curoverse.com/arvados.git/services/datamanager/collection" "git.curoverse.com/arvados.git/services/datamanager/keep" + "git.curoverse.com/arvados.git/services/datamanager/loggerutil" "log" - "os" - "runtime" "time" ) @@ -52,23 +51,9 @@ func main() { WriteInterval: time.Second * time.Duration(logFrequencySeconds)}) } + loggerutil.LogRunInfo(arvLogger) if arvLogger != nil { - now := time.Now() - arvLogger.Update(func(p map[string]interface{}, e map[string]interface{}) { - runInfo := make(map[string]interface{}) - runInfo["time_started"] = now - runInfo["args"] = os.Args - hostname, err := os.Hostname() - if err != nil { - runInfo["hostname_error"] = err.Error() - } else { - runInfo["hostname"] = hostname - } - runInfo["pid"] = os.Getpid() - p["run_info"] = runInfo - }) - - arvLogger.AddWriteHook(LogMemoryAlloc) + arvLogger.AddWriteHook(loggerutil.LogMemoryAlloc) } collectionChannel := make(chan collection.ReadCollections) @@ -96,11 +81,3 @@ func main() { }) } } - -// TODO(misha): Consider moving this to loggerutil -func LogMemoryAlloc(properties map[string]interface{}, entry map[string]interface{}) { - runInfo := properties["run_info"].(map[string]interface{}) - var memStats runtime.MemStats - runtime.ReadMemStats(&memStats) - runInfo["alloc_bytes_in_use"] = memStats.Alloc -} diff --git a/services/datamanager/loggerutil/loggerutil.go b/services/datamanager/loggerutil/loggerutil.go index c19a7abba2..1514922396 100644 --- a/services/datamanager/loggerutil/loggerutil.go +++ b/services/datamanager/loggerutil/loggerutil.go @@ -5,9 +5,42 @@ package loggerutil import ( "git.curoverse.com/arvados.git/sdk/go/logger" "log" + "os" + "runtime" "time" ) +// Useful to call at the begining of execution to log info about the +// current run. +func LogRunInfo(arvLogger *logger.Logger) { + if arvLogger != nil { + now := time.Now() + arvLogger.Update(func(p map[string]interface{}, e map[string]interface{}) { + runInfo := make(map[string]interface{}) + runInfo["time_started"] = now + runInfo["args"] = os.Args + hostname, err := os.Hostname() + if err != nil { + runInfo["hostname_error"] = err.Error() + } else { + runInfo["hostname"] = hostname + } + runInfo["pid"] = os.Getpid() + p["run_info"] = runInfo + }) + } +} + +// A LogMutator that records the current memory usage. This is most useful as a logger write hook. +// +// Assumes we already have a map named "run_info" in properties. LogRunInfo() can create such a map for you if you call it. +func LogMemoryAlloc(p map[string]interface{}, e map[string]interface{}) { + runInfo := p["run_info"].(map[string]interface{}) + var memStats runtime.MemStats + runtime.ReadMemStats(&memStats) + runInfo["alloc_bytes_in_use"] = memStats.Alloc +} + func FatalWithMessage(arvLogger *logger.Logger, message string) { if arvLogger != nil { arvLogger.FinalUpdate(func(p map[string]interface{}, e map[string]interface{}) { -- 2.30.2