X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3a1face2e3bc02e1fb9c53a2268095811b2e069d..037735ad2e0637d1f1892847f0f82e255a1f764e:/services/datamanager/loggerutil/loggerutil.go diff --git a/services/datamanager/loggerutil/loggerutil.go b/services/datamanager/loggerutil/loggerutil.go index c19a7abba2..8c655cd5ff 100644 --- a/services/datamanager/loggerutil/loggerutil.go +++ b/services/datamanager/loggerutil/loggerutil.go @@ -5,14 +5,46 @@ 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 := logger.GetOrCreateMap(p, "run_info") + runInfo["started_at"] = 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() + }) + } +} + +// A LogMutator that records the current memory usage. This is most useful as a logger write hook. +func LogMemoryAlloc(p map[string]interface{}, e map[string]interface{}) { + runInfo := logger.GetOrCreateMap(p, "run_info") + var memStats runtime.MemStats + runtime.ReadMemStats(&memStats) + runInfo["memory_bytes_in_use"] = memStats.Alloc + runInfo["memory_bytes_reserved"] = memStats.Sys +} + func FatalWithMessage(arvLogger *logger.Logger, message string) { if arvLogger != nil { arvLogger.FinalUpdate(func(p map[string]interface{}, e map[string]interface{}) { p["FATAL"] = message - p["run_info"].(map[string]interface{})["time_finished"] = time.Now() + runInfo := logger.GetOrCreateMap(p, "run_info") + runInfo["finished_at"] = time.Now() }) }