8460: Log connection stats.
[arvados.git] / services / ws / log.go
1 package main
2
3 import (
4         "encoding/json"
5         "fmt"
6         "log"
7         "time"
8 )
9
10 func init() {
11         log.SetFlags(0)
12 }
13
14 func errorLogf(f string, args ...interface{}) {
15         log.Print(`{"error":`, string(mustMarshal(fmt.Sprintf(f, args...))), `}`)
16 }
17
18 var debugLogf = func(f string, args ...interface{}) {
19         log.Print(`{"debug":`, string(mustMarshal(fmt.Sprintf(f, args...))), `}`)
20 }
21
22 func mustMarshal(v interface{}) []byte {
23         buf, err := json.Marshal(v)
24         if err != nil {
25                 panic(err)
26         }
27         return buf
28 }
29
30 func logj(args ...interface{}) {
31         m := map[string]interface{}{"Time": time.Now().UTC()}
32         for i := 0; i < len(args)-1; i += 2 {
33                 m[fmt.Sprintf("%s", args[i])] = args[i+1]
34         }
35         buf, err := json.Marshal(m)
36         if err != nil {
37                 errorLogf("logj: %s", err)
38                 return
39         }
40         log.Print(string(buf))
41 }