mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-29 02:16:28 +02:00
Add support for using the standard grpc env vars to control log severity and verbosity (#5120)
This commit is contained in:
parent
de603f87de
commit
d859e884c0
1 changed files with 49 additions and 13 deletions
|
@ -2,67 +2,103 @@ package log
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
"google.golang.org/grpc/grpclog"
|
"google.golang.org/grpc/grpclog"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
grpclog.SetLoggerV2(&grpcLogger{})
|
var verbosityLevel int
|
||||||
|
if level, ok := os.LookupEnv("GRPC_GO_LOG_VERBOSITY_LEVEL"); ok {
|
||||||
|
verbosityLevel, _ = strconv.Atoi(level) // default is 0
|
||||||
|
}
|
||||||
|
getLevel := GetLevel
|
||||||
|
// if the standard grpc severity level is set, it should take priority
|
||||||
|
if severity, ok := os.LookupEnv("GRPC_GO_LOG_SEVERITY_LEVEL"); ok {
|
||||||
|
var severityOverride zerolog.Level
|
||||||
|
if level, err := zerolog.ParseLevel(severity); err == nil {
|
||||||
|
severityOverride = level
|
||||||
|
} else {
|
||||||
|
// some non-standard but common values
|
||||||
|
switch strings.ToLower(strings.TrimSpace(severity)) {
|
||||||
|
case "off":
|
||||||
|
severityOverride = zerolog.Disabled
|
||||||
|
case "err":
|
||||||
|
severityOverride = zerolog.ErrorLevel
|
||||||
|
case "warning": // zerolog only recognizes "warn"
|
||||||
|
severityOverride = zerolog.WarnLevel
|
||||||
|
default:
|
||||||
|
severityOverride = zerolog.ErrorLevel
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getLevel = func() zerolog.Level {
|
||||||
|
return severityOverride
|
||||||
|
}
|
||||||
|
}
|
||||||
|
grpclog.SetLoggerV2(&grpcLogger{
|
||||||
|
verbosityLevel: verbosityLevel,
|
||||||
|
getLevel: getLevel,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
type grpcLogger struct{}
|
type grpcLogger struct {
|
||||||
|
verbosityLevel int
|
||||||
|
getLevel func() zerolog.Level
|
||||||
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) Info(args ...any) {
|
func (c *grpcLogger) Info(args ...any) {
|
||||||
if GetLevel() <= zerolog.DebugLevel {
|
if c.getLevel() <= zerolog.DebugLevel {
|
||||||
Logger().Info().Msg(fmt.Sprint(args...))
|
Logger().Info().Msg(fmt.Sprint(args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) Infoln(args ...any) {
|
func (c *grpcLogger) Infoln(args ...any) {
|
||||||
if GetLevel() <= zerolog.DebugLevel {
|
if c.getLevel() <= zerolog.DebugLevel {
|
||||||
Logger().Info().Msg(fmt.Sprintln(args...))
|
Logger().Info().Msg(fmt.Sprintln(args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) Infof(format string, args ...any) {
|
func (c *grpcLogger) Infof(format string, args ...any) {
|
||||||
if GetLevel() <= zerolog.DebugLevel {
|
if c.getLevel() <= zerolog.DebugLevel {
|
||||||
Logger().Info().Msg(fmt.Sprintf(format, args...))
|
Logger().Info().Msg(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) Warning(args ...any) {
|
func (c *grpcLogger) Warning(args ...any) {
|
||||||
if GetLevel() <= zerolog.DebugLevel {
|
if c.getLevel() <= zerolog.DebugLevel {
|
||||||
Logger().Warn().Msg(fmt.Sprint(args...))
|
Logger().Warn().Msg(fmt.Sprint(args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) Warningln(args ...any) {
|
func (c *grpcLogger) Warningln(args ...any) {
|
||||||
if GetLevel() <= zerolog.DebugLevel {
|
if c.getLevel() <= zerolog.DebugLevel {
|
||||||
Logger().Warn().Msg(fmt.Sprintln(args...))
|
Logger().Warn().Msg(fmt.Sprintln(args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) Warningf(format string, args ...any) {
|
func (c *grpcLogger) Warningf(format string, args ...any) {
|
||||||
if GetLevel() <= zerolog.DebugLevel {
|
if c.getLevel() <= zerolog.DebugLevel {
|
||||||
Logger().Warn().Msg(fmt.Sprintf(format, args...))
|
Logger().Warn().Msg(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) Error(args ...any) {
|
func (c *grpcLogger) Error(args ...any) {
|
||||||
if GetLevel() <= zerolog.DebugLevel {
|
if c.getLevel() <= zerolog.DebugLevel {
|
||||||
Logger().Error().Msg(fmt.Sprint(args...))
|
Logger().Error().Msg(fmt.Sprint(args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) Errorln(args ...any) {
|
func (c *grpcLogger) Errorln(args ...any) {
|
||||||
if GetLevel() <= zerolog.DebugLevel {
|
if c.getLevel() <= zerolog.DebugLevel {
|
||||||
Logger().Error().Msg(fmt.Sprintln(args...))
|
Logger().Error().Msg(fmt.Sprintln(args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) Errorf(format string, args ...any) {
|
func (c *grpcLogger) Errorf(format string, args ...any) {
|
||||||
if GetLevel() <= zerolog.DebugLevel {
|
if c.getLevel() <= zerolog.DebugLevel {
|
||||||
Logger().Error().Msg(fmt.Sprintf(format, args...))
|
Logger().Error().Msg(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,6 +115,6 @@ func (c *grpcLogger) Fatalf(format string, args ...any) {
|
||||||
Logger().Fatal().Msg(fmt.Sprintf(format, args...))
|
Logger().Fatal().Msg(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *grpcLogger) V(int) bool {
|
func (c *grpcLogger) V(l int) bool {
|
||||||
return true
|
return l <= c.verbosityLevel
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue