mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-28 18:06:34 +02:00
107 lines
2.5 KiB
Go
107 lines
2.5 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/rs/zerolog"
|
|
)
|
|
|
|
// A LogLevel represents a logging level.
|
|
type LogLevel string
|
|
|
|
// Known log levels.
|
|
const (
|
|
LogLevelUnset LogLevel = "" // defaults to info
|
|
LogLevelTrace LogLevel = "trace"
|
|
LogLevelDebug LogLevel = "debug"
|
|
LogLevelInfo LogLevel = "info"
|
|
LogLevelWarn LogLevel = "warn"
|
|
LogLevelWarning LogLevel = "warning"
|
|
LogLevelError LogLevel = "error"
|
|
LogLevelCritical LogLevel = "critical"
|
|
LogLevelFatal LogLevel = "fatal"
|
|
LogLevelPanic LogLevel = "panic"
|
|
LogLevelOff LogLevel = "off"
|
|
LogLevelNone LogLevel = "none"
|
|
LogLevelDisabled LogLevel = "disabled"
|
|
)
|
|
|
|
// AllLogLevels are all of the known log levels.
|
|
var AllLogLevels = [...]LogLevel{
|
|
LogLevelUnset,
|
|
LogLevelTrace,
|
|
LogLevelDebug,
|
|
LogLevelInfo,
|
|
LogLevelWarn,
|
|
LogLevelWarning,
|
|
LogLevelError,
|
|
LogLevelCritical,
|
|
LogLevelFatal,
|
|
LogLevelPanic,
|
|
LogLevelOff,
|
|
LogLevelNone,
|
|
LogLevelDisabled,
|
|
}
|
|
|
|
var logLevelLookup = func() map[LogLevel]struct{} {
|
|
m := map[LogLevel]struct{}{}
|
|
for _, lvl := range AllLogLevels {
|
|
m[lvl] = struct{}{}
|
|
}
|
|
return m
|
|
}()
|
|
|
|
// ValidateLogLevel validates that a log level is one of the known log levels.
|
|
func ValidateLogLevel(lvl LogLevel) error {
|
|
_, ok := logLevelLookup[lvl]
|
|
if !ok {
|
|
return fmt.Errorf("unknown log level: %s", lvl)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// ToZerolog converts the log level to a level zerolog expects
|
|
func (lvl LogLevel) ToZerolog() zerolog.Level {
|
|
switch lvl {
|
|
case LogLevelTrace:
|
|
return zerolog.TraceLevel
|
|
case LogLevelDebug:
|
|
return zerolog.DebugLevel
|
|
case LogLevelInfo, LogLevelUnset:
|
|
return zerolog.InfoLevel
|
|
case LogLevelWarn, LogLevelWarning:
|
|
return zerolog.WarnLevel
|
|
case LogLevelError:
|
|
return zerolog.ErrorLevel
|
|
case LogLevelCritical, LogLevelFatal:
|
|
return zerolog.FatalLevel
|
|
case LogLevelPanic:
|
|
return zerolog.PanicLevel
|
|
case LogLevelOff, LogLevelNone, LogLevelDisabled:
|
|
return zerolog.Disabled
|
|
default:
|
|
panic(fmt.Sprintf("unknown log level: %s", lvl))
|
|
}
|
|
}
|
|
|
|
// ToEnvoy converts the log level to a string envoy expects.
|
|
func (lvl LogLevel) ToEnvoy() string {
|
|
switch lvl {
|
|
case LogLevelTrace:
|
|
return "trace"
|
|
case LogLevelDebug:
|
|
return "debug"
|
|
case LogLevelInfo, LogLevelUnset:
|
|
return "info"
|
|
case LogLevelWarn, LogLevelWarning:
|
|
return "warn"
|
|
case LogLevelError:
|
|
return "error"
|
|
case LogLevelCritical, LogLevelFatal, LogLevelPanic:
|
|
return "critical"
|
|
case LogLevelOff, LogLevelNone, LogLevelDisabled:
|
|
return "off"
|
|
default:
|
|
panic(fmt.Sprintf("unknown log level: %s", lvl))
|
|
}
|
|
}
|