aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Hanley <felix@userspace.com.au>2017-12-08 02:46:01 +0000
committerFelix Hanley <felix@userspace.com.au>2017-12-08 02:46:01 +0000
commit19d4e7de75330abb4e71d3eecda7ca222d89da08 (patch)
tree114272a3913cc795cb86321a0e29fc9b7c46df63
parenta6d5e43da92cc7a6f404e501e2bd7bdd8d6be029 (diff)
downloadlogger-19d4e7de75330abb4e71d3eecda7ca222d89da08.tar.gz
logger-19d4e7de75330abb4e71d3eecda7ca222d89da08.tar.bz2
Make keyvalue the default writer0.1.0
-rw-r--r--default.go29
-rw-r--r--keyvalue.go (renamed from outputs/keyvalue/keyvalue.go)17
-rw-r--r--logger_test.go70
-rw-r--r--outputs/keyvalue/keyvalue_test.go97
4 files changed, 50 insertions, 163 deletions
diff --git a/default.go b/default.go
deleted file mode 100644
index 1246153..0000000
--- a/default.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package logger
-
-import (
- "fmt"
- "io"
- "strings"
-)
-
-// DefaultWriter implementation
-type DefaultWriter struct{}
-
-// NewDefaultWriter creates a new writer
-func NewDefaultWriter() *DefaultWriter {
- return &DefaultWriter{}
-}
-
-// Write implements the logger.MessageWriter interface
-func (dw 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, fmt.Sprintf(" %s:", m.Name))
- }
-
- for _, f := range m.Fields {
- io.WriteString(w, fmt.Sprintf(" %s", ToString(f)))
- }
-}
diff --git a/outputs/keyvalue/keyvalue.go b/keyvalue.go
index 234f29b..244cb11 100644
--- a/outputs/keyvalue/keyvalue.go
+++ b/keyvalue.go
@@ -1,22 +1,21 @@
-package keyvalue
+package logger
import (
"fmt"
- "github.com/felix/logger"
"io"
"strings"
)
-// Writer implementation
-type Writer struct{}
+// DefaultWriter implementation
+type DefaultWriter struct{}
// New creates a new writer
-func New() *Writer {
- return &Writer{}
+func NewDefaultWriter() *DefaultWriter {
+ return &DefaultWriter{}
}
// Write implements the logger.MessageWriter interface
-func (kv Writer) Write(w io.Writer, m logger.Message) {
+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 != "" {
@@ -38,8 +37,8 @@ func (kv Writer) Write(w io.Writer, m logger.Message) {
func writeKV(k, v interface{}) string {
return fmt.Sprintf(
" %s=%s",
- maybeQuote(logger.ToString(k)),
- maybeQuote(logger.ToString(v)),
+ maybeQuote(ToString(k)),
+ maybeQuote(ToString(v)),
)
}
diff --git a/logger_test.go b/logger_test.go
index d349801..fe990a5 100644
--- a/logger_test.go
+++ b/logger_test.go
@@ -6,35 +6,33 @@ import (
"testing"
)
-func TestDefaultWriter(t *testing.T) {
+func TestKeyValueWriter(t *testing.T) {
var tests = []struct {
in []interface{}
out string
}{
{
in: []interface{}{"one"},
- out: "[INFO ] testlog: one\n",
+ out: "[INFO ] test: message=one\n",
},
{
in: []interface{}{"one", "two", "2"},
- out: "[INFO ] testlog: one two 2\n",
+ out: "[INFO ] test: message=one two=2\n",
},
{
in: []interface{}{"one", "two", "2", "three", 3},
- out: "[INFO ] testlog: one two 2 three 3\n",
+ out: "[INFO ] test: message=one two=2 three=3\n",
},
- /* TODO maps are not ordered
{
- in: []interface{}{"one", map[string]string{"two": "2", "three": "3"}},
- out: "[INFO ] testlog: one two 2 three 3",
+ in: []interface{}{"one", "two", "2", "three", 3, "fo ur", "# 4"},
+ out: "[INFO ] test: message=one two=2 three=3 \"fo ur\"=\"# 4\"\n",
},
- */
}
for _, tt := range tests {
var buf bytes.Buffer
logger := New(&Options{
- Name: "testlog",
+ Name: "test",
Output: &buf,
})
@@ -52,29 +50,45 @@ func TestDefaultWriter(t *testing.T) {
}
}
-// Comparison with hclog
-func BenchmarkLogger(b *testing.B) {
- b.Run("info with 10 pairs", func(b *testing.B) {
+func TestKeyValueWriterWithFields(t *testing.T) {
+ var tests = []struct {
+ in []interface{}
+ out string
+ }{
+ {
+ in: []interface{}{"one"},
+ out: "[INFO ] test: message=one added=this\n",
+ },
+ {
+ in: []interface{}{"one", "two", "2"},
+ out: "[INFO ] test: message=one two=2 added=this\n",
+ },
+ {
+ in: []interface{}{"one", "two", "2", "three", 3},
+ out: "[INFO ] test: message=one two=2 three=3 added=this\n",
+ },
+ {
+ in: []interface{}{"one", "two", "2", "three", 3, "fo ur", "# 4"},
+ out: "[INFO ] test: message=one two=2 three=3 \"fo ur\"=\"# 4\" added=this\n",
+ },
+ }
+ for _, tt := range tests {
var buf bytes.Buffer
-
logger := New(&Options{
Name: "test",
Output: &buf,
- })
+ }).WithFields("added", "this")
+
+ logger.Info(tt.in...)
+
+ str := buf.String()
- for i := 0; i < b.N; i++ {
- logger.Info("this is some message",
- "name", "foo",
- "what", "benchmarking yourself",
- "why", "to see what's slow",
- "k4", "value",
- "k5", "value",
- "k6", "value",
- "k7", "value",
- "k8", "value",
- "k9", "value",
- "k10", "value",
- )
+ // Chop timestamp
+ dataIdx := strings.IndexByte(str, ' ')
+ rest := str[dataIdx+1:]
+
+ if rest != tt.out {
+ t.Errorf("Info(%q) => %q, expected %q\n", tt.in, rest, tt.out)
}
- })
+ }
}
diff --git a/outputs/keyvalue/keyvalue_test.go b/outputs/keyvalue/keyvalue_test.go
deleted file mode 100644
index bf02879..0000000
--- a/outputs/keyvalue/keyvalue_test.go
+++ /dev/null
@@ -1,97 +0,0 @@
-package keyvalue
-
-import (
- "bytes"
- "github.com/felix/logger"
- "strings"
- "testing"
-)
-
-func TestKeyValueWriter(t *testing.T) {
- var tests = []struct {
- in []interface{}
- out string
- }{
- {
- in: []interface{}{"one"},
- out: "[INFO ] test: message=one\n",
- },
- {
- in: []interface{}{"one", "two", "2"},
- out: "[INFO ] test: message=one two=2\n",
- },
- {
- in: []interface{}{"one", "two", "2", "three", 3},
- out: "[INFO ] test: message=one two=2 three=3\n",
- },
- {
- in: []interface{}{"one", "two", "2", "three", 3, "fo ur", "# 4"},
- out: "[INFO ] test: message=one two=2 three=3 \"fo ur\"=\"# 4\"\n",
- },
- }
-
- for _, tt := range tests {
- var buf bytes.Buffer
- logger := logger.New(&logger.Options{
- Name: "test",
- Output: &buf,
- Formatter: New(),
- })
-
- logger.Info(tt.in...)
-
- str := buf.String()
-
- // Chop timestamp
- dataIdx := strings.IndexByte(str, ' ')
- rest := str[dataIdx+1:]
-
- if rest != tt.out {
- t.Errorf("Info(%q) => %q, expected %q\n", tt.in, rest, tt.out)
- }
- }
-}
-
-func TestKeyValueWriterWithFields(t *testing.T) {
- var tests = []struct {
- in []interface{}
- out string
- }{
- {
- in: []interface{}{"one"},
- out: "[INFO ] test: message=one added=this\n",
- },
- {
- in: []interface{}{"one", "two", "2"},
- out: "[INFO ] test: message=one two=2 added=this\n",
- },
- {
- in: []interface{}{"one", "two", "2", "three", 3},
- out: "[INFO ] test: message=one two=2 three=3 added=this\n",
- },
- {
- in: []interface{}{"one", "two", "2", "three", 3, "fo ur", "# 4"},
- out: "[INFO ] test: message=one two=2 three=3 \"fo ur\"=\"# 4\" added=this\n",
- },
- }
- for _, tt := range tests {
- var buf bytes.Buffer
- logger := logger.New(&logger.Options{
- Name: "test",
- Output: &buf,
- Formatter: New(),
- }).WithFields("added", "this")
-
- logger.Info(tt.in...)
-
- str := buf.String()
-
- // Chop timestamp
- dataIdx := strings.IndexByte(str, ' ')
- rest := str[dataIdx+1:]
-
- if rest != tt.out {
- t.Errorf("Info(%q) => %q, expected %q\n", tt.in, rest, tt.out)
- }
- }
-}