X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e14e011f667d314e557c580de69a271534b6149f..08793025fb951153ce374f8eb4f984ee21f6a2bc:/sdk/go/httpserver/log.go diff --git a/sdk/go/httpserver/log.go b/sdk/go/httpserver/log.go index 7bee88742c..cdfc595e67 100644 --- a/sdk/go/httpserver/log.go +++ b/sdk/go/httpserver/log.go @@ -1,20 +1,21 @@ package httpserver import ( + "fmt" "log" - "strings" ) -var escaper = strings.NewReplacer("\"", "\\\"", "\\", "\\\\", "\n", "\\n") - // Log calls log.Println but first transforms strings so they are // safer to write in logs (e.g., 'foo"bar' becomes -// '"foo\"bar"'). Non-string args are left alone. +// '"foo\"bar"'). Arguments that aren't strings and don't have a +// (String() string) method are left alone. func Log(args ...interface{}) { newargs := make([]interface{}, len(args)) for i, arg := range args { if s, ok := arg.(string); ok { - newargs[i] = "\"" + escaper.Replace(s) + "\"" + newargs[i] = fmt.Sprintf("%+q", s) + } else if s, ok := arg.(fmt.Stringer); ok { + newargs[i] = fmt.Sprintf("%+q", s.String()) } else { newargs[i] = arg }