5824: Move quoted-logging function to SDK.
[arvados.git] / sdk / go / httpserver / log.go
1 package httpserver
2
3 import (
4         "log"
5         "strings"
6 )
7
8 var escaper = strings.NewReplacer("\"", "\\\"", "\\", "\\\\", "\n", "\\n")
9
10 // Log calls log.Println but first transforms strings so they are
11 // safer to write in logs (e.g., 'foo"bar' becomes
12 // '"foo\"bar"'). Non-string args are left alone.
13 func Log(args ...interface{}) {
14         newargs := make([]interface{}, len(args))
15         for i, arg := range args {
16                 if s, ok := arg.(string); ok {
17                         newargs[i] = "\"" + escaper.Replace(s) + "\""
18                 } else {
19                         newargs[i] = arg
20                 }
21         }
22         log.Println(newargs...)
23 }