package logprovider
|
|
|
|
import (
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
"time"
|
|
)
|
|
|
|
// CreateDefaultZapLogger creates a logger with default zap configuration
|
|
func CreateDefaultZapLogger(level zapcore.Level) (*zap.Logger, error) {
|
|
logCfg := DefaultZapLoggerConfig
|
|
logCfg.Level = zap.NewAtomicLevelAt(level)
|
|
c, err := logCfg.Build()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return c, nil
|
|
}
|
|
|
|
// DefaultZapLoggerConfig defines default zap logger configuration.
|
|
var DefaultZapLoggerConfig = zap.Config{
|
|
Level: zap.NewAtomicLevelAt(ConvertToZapLevel(DefaultLogLevel)),
|
|
|
|
Development: false,
|
|
Sampling: &zap.SamplingConfig{
|
|
Initial: 100,
|
|
Thereafter: 100,
|
|
},
|
|
|
|
Encoding: DefaultLogFormat,
|
|
|
|
// copied from "zap.NewProductionEncoderConfig" with some updates
|
|
EncoderConfig: zapcore.EncoderConfig{
|
|
TimeKey: "ts",
|
|
LevelKey: "level",
|
|
NameKey: "logger",
|
|
CallerKey: "caller",
|
|
MessageKey: "msg",
|
|
StacktraceKey: "stacktrace",
|
|
LineEnding: zapcore.DefaultLineEnding,
|
|
EncodeLevel: zapcore.LowercaseLevelEncoder,
|
|
|
|
// Custom EncodeTime function to ensure we match format and precision of historic capnslog timestamps
|
|
EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
|
|
enc.AppendString(t.Format("2006-01-02T15:04:05.999999Z0700"))
|
|
},
|
|
|
|
EncodeDuration: zapcore.StringDurationEncoder,
|
|
EncodeCaller: zapcore.ShortCallerEncoder,
|
|
},
|
|
|
|
// Use "/dev/null" to discard all
|
|
OutputPaths: []string{"stderr"},
|
|
ErrorOutputPaths: []string{"stderr"},
|
|
}
|