Files
calculate_negative_points/internal/config/logging.go
Eugene Howe b0957bfa49
Some checks failed
Docker Build and Publish / publish (push) Failing after 1m33s
webapp
2026-02-17 09:47:30 -05:00

35 lines
916 B
Go

package config
import (
"io"
"os"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func NewLogger(version Version, output io.Writer, args []string) (*zap.Logger, func()) {
parsedCliArgs, _ := ParseArgs(version, os.Exit, args)
syncs := []zapcore.WriteSyncer{zapcore.AddSync(output)}
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.RFC3339NanoTimeEncoder
core := zapcore.NewCore(
zapcore.NewJSONEncoder(encoderConfig),
zap.CombineWriteSyncers(syncs...),
zap.DebugLevel,
)
logger := zap.New(core).WithOptions(
zap.AddStacktrace(zap.ErrorLevel),
zap.WithCaller(false),
).With(
zap.String("version", version.Release),
zap.String("environment", *parsedCliArgs.Environment),
)
finalizer := func() {
// This might fail if logging to console, but we don't care (https://github.com/uber-go/zap/issues/880)
_ = logger.Sync()
}
return logger, finalizer
}