Skip to content

Commit 8a936ea

Browse files
committed
fixed tags
1 parent 48190dd commit 8a936ea

File tree

3 files changed

+39
-13
lines changed

3 files changed

+39
-13
lines changed

README.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,22 @@ There are two way you can use ratlog.
88

99
```golang
1010
var b bytes.Buffer
11-
ratlog := Ratlog{writer: &b}
12-
ratlog.Log(Props{message: test.Data.Message, tags: test.Data.Tags, fields: fields})
11+
rlog := ratlog.New(&b)
12+
rlog.Log(Props{message: test.Data.Message, tags: test.Data.Tags, fields: fields})
1313
```
1414

1515
```golang
1616
var b bytes.Buffer
17-
ratlog := Ratlog{writer: &b}
18-
ratlog.Message("Hello World").Fields("a": "1", "b": "2").Tag("debug", "error").Log()
17+
rlog := ratlog.New(&b)
18+
rlog.Message("Hello World").Fields("a": "1", "b": "2").Tag("debug", "error").Log()
19+
```
20+
21+
You can provide a log instance with an additional tag
22+
23+
```golang
24+
var b bytes.Buffer
25+
rlog := ratlog.New(&b)
26+
errorLog := rlog.Tag("error")
27+
errorLog.Message("Hello World").Fields("a": "2", "b": "3").Tag("bla", "baz").Log()
28+
// [error|debug|bla|baz] Hello World | a: 2 | b: 3
1929
```

ratlog.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,14 @@ type Ratlog struct {
1717
// https://github.com/ratlog/ratlog-spec#fields
1818
type Fields map[string]string
1919

20+
// New returns a new instance of Ratlog without any tags
21+
func New(writer io.Writer) Ratlog {
22+
return Ratlog{writer: writer, tags: []string{}}
23+
}
24+
2025
// Tag returns a new Ratlog instance with appended tags
2126
// https://github.com/ratlog/ratlog-spec#tags
22-
func (log Ratlog) Tag(tags []string) Ratlog {
27+
func (log Ratlog) Tag(tags ...string) Ratlog {
2328
return Ratlog{writer: log.writer, tags: append(log.tags, tags...)}
2429
}
2530

@@ -96,15 +101,11 @@ type Props struct {
96101

97102
// Log writes a log to the writer
98103
func (log *Ratlog) Log(properties Props) error {
99-
_, err := log.writer.Write([]byte(getLogMessage(properties.message, properties.fields, properties.tags)))
104+
content := getLogMessage(properties.message, properties.fields, append(log.tags, properties.tags...))
105+
_, err := log.writer.Write([]byte(content))
100106
return err
101107
}
102108

103-
// New returns a new instance of Ratlog without any tags
104-
func New(writer io.Writer) Ratlog {
105-
return Ratlog{writer: writer, tags: []string{}}
106-
}
107-
108109
// LogItem represents a log.
109110
type LogItem struct {
110111
props Props

ratlog_test.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func runTestsuite(t *testing.T, tests []Test, name string) {
6464
fields = getStringMap(test.Data.Fields.(map[string]interface{}))
6565
}
6666
var b bytes.Buffer
67-
ratlog := Ratlog{writer: &b}
67+
ratlog := New(&b)
6868
ratlog.Log(Props{message: test.Data.Message, tags: test.Data.Tags, fields: fields})
6969
if test.Log != b.String() {
7070
t.Errorf("%s test # %d failed\nExpected: %#v\nReceived: %#v\n\n", name, index+1, test.Log, b.String())
@@ -82,9 +82,24 @@ func TestSuite(t *testing.T) {
8282
runTestsuite(t, testsuite.Parsing, "Parsing")
8383
}
8484

85+
func TestTag(t *testing.T) {
86+
var b bytes.Buffer
87+
ratlog := New(&b)
88+
errorLag := ratlog.Tag("error", "debug")
89+
err := errorLag.Message("Hello World").Tag("bla", "baz").Fields("a", "2", "b", "3").Log()
90+
91+
if err != nil {
92+
t.Error(err)
93+
}
94+
expected := "[error|debug|bla|baz] Hello World | a: 2 | b: 3\n"
95+
if b.String() != expected {
96+
t.Errorf("failed\nExpected: %#v\nReceived: %#v\n\n", expected, b.String())
97+
}
98+
}
99+
85100
func TestBuilder(t *testing.T) {
86101
var b bytes.Buffer
87-
ratlog := Ratlog{writer: &b}
102+
ratlog := New(&b)
88103
err := ratlog.Message("Hello World").Tag("bla", "baz").Fields("a", "2", "b", "3").Log()
89104

90105
if err != nil {

0 commit comments

Comments
 (0)