diff options
| author | Felix Hanley <felix@userspace.com.au> | 2018-01-03 13:48:48 +0000 |
|---|---|---|
| committer | Felix Hanley <felix@userspace.com.au> | 2018-01-03 13:48:48 +0000 |
| commit | fe10d8bf1d9655b6fc34da6a2ffd5298ddf9f7ac (patch) | |
| tree | 7bcf14a24ca841df943225d234db1fb2869ec5d5 /vendor/github.com/felix/logger/keyvalue.go | |
| parent | 9ac76d815bbf58bf277155354c5e61541d5ce2cc (diff) | |
| download | dhtsearch-fe10d8bf1d9655b6fc34da6a2ffd5298ddf9f7ac.tar.gz dhtsearch-fe10d8bf1d9655b6fc34da6a2ffd5298ddf9f7ac.tar.bz2 | |
Add logger dep
Diffstat (limited to 'vendor/github.com/felix/logger/keyvalue.go')
| -rw-r--r-- | vendor/github.com/felix/logger/keyvalue.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/vendor/github.com/felix/logger/keyvalue.go b/vendor/github.com/felix/logger/keyvalue.go new file mode 100644 index 0000000..244cb11 --- /dev/null +++ b/vendor/github.com/felix/logger/keyvalue.go @@ -0,0 +1,50 @@ +package logger + +import ( + "fmt" + "io" + "strings" +) + +// DefaultWriter implementation +type DefaultWriter struct{} + +// New creates a new writer +func NewDefaultWriter() *DefaultWriter { + return &DefaultWriter{} +} + +// Write implements the logger.MessageWriter interface +func (kv DefaultWriter) Write(w io.Writer, m Message) { + prefix := fmt.Sprintf("%s [%-5s]", m.Time, strings.ToUpper(m.Level.String())) + io.WriteString(w, prefix) + if m.Name != "" { + io.WriteString(w, " ") + io.WriteString(w, m.Name) + io.WriteString(w, ":") + } + + offset := len(m.Fields) % 2 + if offset != 0 { + io.WriteString(w, writeKV("message", m.Fields[0])) + } + + for i := offset; i < len(m.Fields); i = i + 2 { + io.WriteString(w, writeKV(m.Fields[i], m.Fields[i+1])) + } +} + +func writeKV(k, v interface{}) string { + return fmt.Sprintf( + " %s=%s", + maybeQuote(ToString(k)), + maybeQuote(ToString(v)), + ) +} + +func maybeQuote(s string) string { + if strings.ContainsAny(s, " \t\n\r") { + return fmt.Sprintf("%q", s) + } + return s +} |
