pomerium/internal/autocert/certmagic_logger.go
Caleb Doxsey df8ff26332
autocert: suppress OCSP stapling errors (#4371)
* autocert: suppress OCSP stapling errors

* check level, add test
2023-07-19 13:56:36 -06:00

53 lines
1.3 KiB
Go

package autocert
import (
"strings"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"github.com/pomerium/pomerium/internal/log"
)
type certMagicLoggerCore struct {
core zapcore.Core
fields []zapcore.Field
}
func (c certMagicLoggerCore) Enabled(lvl zapcore.Level) bool {
return c.core.Enabled(lvl)
}
func (c certMagicLoggerCore) With(fs []zapcore.Field) zapcore.Core {
return certMagicLoggerCore{core: c.core, fields: append(c.fields, fs...)}
}
func (c certMagicLoggerCore) Check(e zapcore.Entry, ce *zapcore.CheckedEntry) *zapcore.CheckedEntry {
if !c.Enabled(e.Level) {
return ce
}
return ce.AddCore(e, c)
}
func (c certMagicLoggerCore) Write(e zapcore.Entry, fs []zapcore.Field) error {
fs = append(c.fields, fs...)
for _, f := range fs {
if f.Type == zapcore.ErrorType && strings.Contains(f.Interface.(error).Error(), "no OCSP server specified in certificate") {
// ignore this error message (#4245)
return nil
}
}
return c.core.Write(e, fs)
}
func (c certMagicLoggerCore) Sync() error {
return c.core.Sync()
}
func getCertMagicLogger() *zap.Logger {
logger := log.ZapLogger().With(zap.String("service", "autocert"))
logger = logger.WithOptions(zap.WrapCore(func(c zapcore.Core) zapcore.Core {
return certMagicLoggerCore{core: c}
}))
return logger
}