Documentation
¶
Overview ¶
Package zaplogfmt provides a logfmt encoder for zap (https://github.com/uber-go/zap)
Example (Array) ¶
package main
import (
"os"
zaplogfmt "github.com/allir/zap-logfmt"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
config := zap.NewProductionEncoderConfig()
config.TimeKey = ""
logger := zap.New(zapcore.NewCore(
zaplogfmt.NewEncoder(config),
os.Stdout,
zapcore.DebugLevel,
))
logger.Info("counting", zap.Ints("values", []int{0, 1, 2, 3}))
}
Output: level=info msg=counting values=[0,1,2,3]
Example (NewEncoder) ¶
package main
import (
"os"
zaplogfmt "github.com/allir/zap-logfmt"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
config := zap.NewProductionEncoderConfig()
config.TimeKey = ""
logger := zap.New(
zapcore.NewCore(
zaplogfmt.NewEncoder(config),
zapcore.Lock(os.Stdout),
zapcore.DebugLevel),
zap.AddCaller(),
zap.AddStacktrace(zapcore.ErrorLevel),
).Named("main")
defer logger.Sync()
logger.Info("Hello World")
}
Output: level=info logger=main caller=zap-logfmt/example_test.go:24 msg="Hello World"
Example (Object) ¶
package main
import (
"os"
zaplogfmt "github.com/allir/zap-logfmt"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type Person struct {
First string
Last string
Age int
}
func (p Person) MarshalLogObject(enc zapcore.ObjectEncoder) error {
enc.AddString("first", p.First)
enc.AddString("last", p.Last)
enc.AddInt("age", p.Age)
return nil
}
func main() {
config := zap.NewProductionEncoderConfig()
config.TimeKey = ""
logger := zap.New(zapcore.NewCore(
zaplogfmt.NewEncoder(config),
zapcore.Lock(os.Stdout),
zapcore.DebugLevel,
))
defer logger.Sync()
person := Person{First: "Arthur", Last: "Dent", Age: 42}
logger.Warn("hitchhiker discovered", zap.Object("identity", person))
}
Output: level=warn msg="hitchhiker discovered" identity="first=Arthur last=Dent age=42"
Example (Register) ¶
package main
import (
zaplogfmt "github.com/allir/zap-logfmt"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
zaplogfmt.Register()
zapConfig := zap.NewProductionConfig()
zapConfig.Encoding = "logfmt"
zapConfig.OutputPaths = []string{"stdout"} // Need to log to stdout for the test
zapConfig.EncoderConfig = zap.NewProductionEncoderConfig()
zapConfig.EncoderConfig.TimeKey = ""
zapConfig.EncoderConfig.EncodeTime = zapcore.RFC3339TimeEncoder
logger, err := zapConfig.Build()
if err != nil {
panic(err)
}
defer logger.Sync()
logger = logger.Named("reg")
logger.Info("Hello World")
}
Output: level=info logger=reg caller=zap-logfmt/example_test.go:47 msg="Hello World"
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewEncoder ¶
func NewEncoder(cfg zapcore.EncoderConfig) zapcore.Encoder
NewEncoder creates an encoder interface for zap that writes logfmt formatted log entries.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.