logger/unwrap: fix unwrap format

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
Василий Толстов 2023-02-03 23:33:24 +03:00
parent 7462b0b53c
commit 6cbf23fec5
2 changed files with 10 additions and 6 deletions

View File

@ -353,6 +353,7 @@ func (f *unwrap) format(v reflect.Value) {
f.depth++
vt := v.Type()
prevSkip := false
for i := 0; i < numFields; i++ {
sv, ok := vt.Field(i).Tag.Lookup("logger")
if ok {
@ -367,13 +368,16 @@ func (f *unwrap) format(v reflect.Value) {
prevSkip = true
continue
}
if i > 0 && !prevSkip {
_, _ = f.s.Write(commaBytes)
_, _ = f.s.Write(spaceBytes)
}
if prevSkip {
prevSkip = false
}
if numWritten > 0 {
_, _ = f.s.Write(commaBytes)
_, _ = f.s.Write(spaceBytes)
}
vtf := vt.Field(i)
if f.s.Flag('+') || f.s.Flag('#') {
_, _ = f.s.Write([]byte(vtf.Name))

View File

@ -86,12 +86,12 @@ func TestTaggedNested(t *testing.T) {
unk string
}
type str struct {
val *val `logger:"take"`
key string `logger:"omit"`
val *val `logger:"take"`
}
var iface interface{}
v := &str{key: "omit", val: &val{key: "test", val: "omit", unk: "unk"}}
v := &str{val: &val{key: "test", unk: "unk"}}
iface = v
buf := fmt.Sprintf("%#v", Unwrap(iface, Tagged(true)))
if strings.Compare(buf, `&unwrap.str{val:(*unwrap.val){key:"test"}}`) != 0 {