diff --git a/cmd/docker-fpm-wrapper/config.go b/cmd/docker-fpm-wrapper/config.go index d8f6c68..2de1935 100644 --- a/cmd/docker-fpm-wrapper/config.go +++ b/cmd/docker-fpm-wrapper/config.go @@ -10,7 +10,7 @@ import ( ) type Config struct { - LogLevel int `mapstructure:"log-level"` + LogLevel string `mapstructure:"log-level"` LogEncoder string `mapstructure:"log-encoder"` FpmPath string `mapstructure:"fpm"` @@ -32,7 +32,7 @@ type Config struct { } func parseCommandLineFlags() { - pflag.Int8("log-level", -1, "Log level. -1 debug ") + pflag.String("log-level", "-1", "Log level. -1 debug ") pflag.String("log-encoder", "auto", "Internal logging encoder") pflag.StringP("fpm", "f", "", "path to php-fpm") diff --git a/cmd/docker-fpm-wrapper/logger.go b/cmd/docker-fpm-wrapper/logger.go index 55e135b..1f7d751 100644 --- a/cmd/docker-fpm-wrapper/logger.go +++ b/cmd/docker-fpm-wrapper/logger.go @@ -49,13 +49,13 @@ func createLoggerEncoder(eName string, encoderConfig zapcore.EncoderConfig) (zap } } -func createLogger(encName string, level int, output zapcore.WriteSyncer) (*zap.Logger, error) { +func createLogger(encName string, level zapcore.Level, output zapcore.WriteSyncer) (*zap.Logger, error) { enc, err := createLoggerEncoder(encName, newZapEncoderConfig()) if err != nil { return nil, err } - atomicLevel := zap.NewAtomicLevelAt(zapcore.Level(level)) + atomicLevel := zap.NewAtomicLevelAt(level) return zap.New(zapcore.NewCore(enc, output, atomicLevel)), nil } diff --git a/cmd/docker-fpm-wrapper/main.go b/cmd/docker-fpm-wrapper/main.go index 734bb79..91267dc 100644 --- a/cmd/docker-fpm-wrapper/main.go +++ b/cmd/docker-fpm-wrapper/main.go @@ -6,6 +6,7 @@ import ( "net/http" "os" "os/signal" + "strconv" "syscall" "github.com/prometheus/client_golang/prometheus" @@ -42,7 +43,21 @@ func main() { } syncStderr := zapcore.Lock(os.Stderr) - log, err := createLogger(cfg.LogEncoder, cfg.LogLevel, syncStderr) + // cfg.LogLevel can be either int or string + // example: it can be -1 or debug + // try to parse it by string + logLever, err := zapcore.ParseLevel(cfg.LogLevel) + if err != nil { + // so, the string is not correct, try to parse it as int + logLeverRaw, err := strconv.Atoi(cfg.LogLevel) + if err != nil { + fmt.Printf("Can't parse log level '%v': %v\n", cfg.LogLevel, err) + os.Exit(1) + } + logLever = zapcore.Level(logLeverRaw) + } + + log, err := createLogger(cfg.LogEncoder, logLever, syncStderr) if cfg.FpmPath == "" { log.Error("php-fpm path not set")