wormhole-explorer/common/logger/logger.go

37 lines
629 B
Go

package logger
import (
"fmt"
"os"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type Option func(*zap.Config)
func WithLevel(level string) Option {
return func(c *zap.Config) {
lvl, err := zap.ParseAtomicLevel(level)
if err != nil {
fmt.Fprintf(os.Stderr, "parsing log level '%s'\n", err)
} else {
c.Level = lvl
}
}
}
func New(system string, opts ...Option) *zap.Logger {
config := zap.NewProductionConfig()
config.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
for _, opt := range opts {
opt(&config)
}
l, err := config.Build()
if err != nil {
panic(err)
}
return l.Named(system)
}