diff --git a/_template/cmd/{{.Base.appName}}/main.go b/_template/cmd/{{.Base.appName}}/main.go index f891779f..b5d000d6 100644 --- a/_template/cmd/{{.Base.appName}}/main.go +++ b/_template/cmd/{{.Base.appName}}/main.go @@ -4,6 +4,7 @@ import ( "fmt" "os" + "{{.Base.moduleName}}/internal/logger" "go.uber.org/zap" // This controls the maxprocs environment variable in container runtimes. @@ -19,7 +20,7 @@ func main() { } func run() error { - logger, err := zap.NewProduction() + logger, err := logger.NewAtLevel(os.Getenv("LOG_LEVEL")) if err != nil { return err } diff --git a/_template/internal/logger/logger.go b/_template/internal/logger/logger.go new file mode 100644 index 00000000..3f2597cb --- /dev/null +++ b/_template/internal/logger/logger.go @@ -0,0 +1,27 @@ +package logger + +import ( + "go.uber.org/zap" + "go.uber.org/zap/zapcore" +) + +func NewAtLevel(levelStr string) (*zap.Logger, error) { + logLevel := zapcore.InfoLevel + if levelStr != "" { + var err error + logLevel, err = zapcore.ParseLevel(levelStr) + if err != nil { + return nil, err + } + } + + logConf := zap.NewProductionConfig() + logConf.Level = zap.NewAtomicLevelAt(logLevel) + + logger, err := logConf.Build() + if err != nil { + return nil, err + } + + return logger, nil +}