Skip to content

Instantly share code, notes, and snippets.

@xeoncross
Created January 22, 2020 16:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xeoncross/b79843ece9998f681fa0babe44c50df4 to your computer and use it in GitHub Desktop.
Save xeoncross/b79843ece9998f681fa0babe44c50df4 to your computer and use it in GitHub Desktop.
Example helper for creating a new zap.Logger instance that logs to stderr without the caller/stacktrace.
package zaplog
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// https://github.com/uber-go/zap/blob/master/config.go#L40-L127
// For testing use https://godoc.org/go.uber.org/zap#NewNop
// Usage:
// zaplogger, err := zaplog.NewProductionZapLogger()
// if err != nil {
// log.Fatal(err)
// }
// defer zaplogger.Sync()
// logger := zaplogger.Sugar()
// NewProductionZapLogger instance
func NewProductionZapLogger() (*zap.Logger, error) {
cfg := zap.Config{
Level: zap.NewAtomicLevelAt(zapcore.DebugLevel),
Encoding: "json",
OutputPaths: []string{"stderr"},
ErrorOutputPaths: []string{"stderr"},
EncoderConfig: zapcore.EncoderConfig{
MessageKey: "msg",
TimeKey: "ts",
EncodeTime: zapcore.ISO8601TimeEncoder,
LevelKey: "level",
EncodeLevel: zapcore.CapitalLevelEncoder,
},
DisableStacktrace: true,
DisableCaller: true,
}
logger, err := cfg.Build()
if err != nil {
return nil, err
}
return logger, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment