zapfancyencoder
The fancy encoder is a zap encoder that prints the logs in a colored human readable format.
Below an example:
Level : INFO
Message : Hello, world!
Timestamp : 2023-08-24 22:20:29 -03:00
Fields :
├─ persistent: value
├─ id : 123
└─ obj :
├─ name: John
└─ age : 32
------------------------------------
Level : WARN
Message : test error message
Timestamp : 2023-08-24 22:20:29 -03:00
Fields :
├─ persistent: value
├─ id : 123
├─ obj :
| ├─ name: John
| └─ age : 32
├─ id : 123
└─ obj :
├─ name: John
├─ age : 32
└─ arr :
├─ [0]: a
├─ [1]: b
├─ [2]:
| ├─ [0]: c1
| └─ [1]: c2
├─ [3]: d
└─ [4]:
├─ name: John
└─ age : 32
------------------------------------
Level : ERROR
Message : test error message
Timestamp : 2023-08-24 22:20:29 -03:00
Fields :
├─ persistent: value
├─ id : 123
├─ obj :
| ├─ name: John
| └─ age : 32
├─ id : 123
├─ obj :
| ├─ name: John
| ├─ age : 32
| └─ arr :
| ├─ [0]: a
| ├─ [1]: b
| ├─ [2]:
| | ├─ [0]: c1
| | └─ [1]: c2
| ├─ [3]: d
| └─ [4]:
| ├─ name: John
| └─ age : 32
├─ id : 123
└─ obj :
├─ name: John
└─ age : 32
------------------------------------
Usage
package main
import (
_ "github.com/jamillosantos/zapfancyencoder"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
zapcfg := zap.NewDevelopmentConfig()
zapcfg.Encoding = "fancy"
logger, err := zapcfg.Build()
if err != nil {
panic(err)
}
logger.
With(zap.String("field_1", "value_1")).
Info("Hello, world!",
zap.String("id", "123"),
zap.Object("obj", zapcore.ObjectMarshalerFunc(func(enc zapcore.ObjectEncoder) error {
enc.AddString("name", "John")
enc.AddInt("age", 32)
return nil
})),
)
}