[] Refactor logger tag configuration
Some checks failed
/ DCO (pull_request) Failing after 36s
/ Builds (pull_request) Successful in 1m3s
/ OCI image (pull_request) Successful in 1m54s
/ Vulncheck (pull_request) Failing after 2m39s
/ Lint (pull_request) Successful in 5m10s
/ Tests (pull_request) Successful in 2m42s
/ Integration tests (pull_request) Failing after 2m47s
Some checks failed
/ DCO (pull_request) Failing after 36s
/ Builds (pull_request) Successful in 1m3s
/ OCI image (pull_request) Successful in 1m54s
/ Vulncheck (pull_request) Failing after 2m39s
/ Lint (pull_request) Successful in 5m10s
/ Tests (pull_request) Successful in 2m42s
/ Integration tests (pull_request) Failing after 2m47s
Signed-off-by: Pavel Pogodaev <p.pogodaev@yadro.com>
This commit is contained in:
parent
f0b86c8ba7
commit
1dcf1775de
3 changed files with 20 additions and 20 deletions
|
@ -114,7 +114,8 @@ type (
|
|||
}
|
||||
|
||||
tagsConfig struct {
|
||||
tagLogs sync.Map
|
||||
tagLogs sync.Map
|
||||
defaultLvl zap.AtomicLevel
|
||||
}
|
||||
|
||||
logLevelConfig struct {
|
||||
|
@ -170,23 +171,21 @@ func (t *tagsConfig) LevelEnabled(tag string, tgtLevel zapcore.Level) bool {
|
|||
return lvl.(zapcore.Level).Enabled(tgtLevel)
|
||||
}
|
||||
|
||||
func (t *tagsConfig) DefaultEnabled(lvl zapcore.Level) bool {
|
||||
return t.defaultLvl.Enabled(lvl)
|
||||
}
|
||||
|
||||
func (t *tagsConfig) update(cfg *viper.Viper, ll zapcore.Level) error {
|
||||
tags, err := fetchLogTagsConfig(cfg, ll)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
t.tagLogs.Range(func(key, value any) bool {
|
||||
t.tagLogs.Range(func(key, _ any) bool {
|
||||
k := key.(string)
|
||||
v := value.(zapcore.Level)
|
||||
|
||||
if lvl, ok := tags[k]; ok {
|
||||
if lvl != v {
|
||||
t.tagLogs.Store(key, lvl)
|
||||
}
|
||||
} else {
|
||||
if _, ok := tags[k]; !ok {
|
||||
t.tagLogs.Delete(key)
|
||||
delete(tags, k)
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
@ -194,6 +193,7 @@ func (t *tagsConfig) update(cfg *viper.Viper, ll zapcore.Level) error {
|
|||
for k, v := range tags {
|
||||
t.tagLogs.Store(k, v)
|
||||
}
|
||||
t.defaultLvl.SetLevel(ll)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ type zapCoreTagFilterWrapper struct {
|
|||
|
||||
type TagFilterSettings interface {
|
||||
LevelEnabled(tag string, lvl zapcore.Level) bool
|
||||
DefaultEnabled(lvl zapcore.Level) bool
|
||||
}
|
||||
|
||||
func (c *zapCoreTagFilterWrapper) Enabled(level zapcore.Level) bool {
|
||||
|
@ -63,24 +64,26 @@ func (c *zapCoreTagFilterWrapper) Check(entry zapcore.Entry, checked *zapcore.Ch
|
|||
}
|
||||
|
||||
func (c *zapCoreTagFilterWrapper) Write(entry zapcore.Entry, fields []zapcore.Field) error {
|
||||
if c.shouldSkip(entry, fields) || c.shouldSkip(entry, c.extra) {
|
||||
if c.shouldSkip(entry, fields, c.extra) {
|
||||
return nil
|
||||
}
|
||||
|
||||
return c.core.Write(entry, fields)
|
||||
}
|
||||
|
||||
func (c *zapCoreTagFilterWrapper) shouldSkip(entry zapcore.Entry, fields []zap.Field) bool {
|
||||
func (c *zapCoreTagFilterWrapper) shouldSkip(entry zapcore.Entry, fields []zap.Field, extra []zap.Field) bool {
|
||||
for _, field := range fields {
|
||||
if field.Key == logs.TagFieldName && field.Type == zapcore.StringType {
|
||||
if !c.settings.LevelEnabled(field.String, entry.Level) {
|
||||
return true
|
||||
}
|
||||
break
|
||||
return !c.settings.LevelEnabled(field.String, entry.Level)
|
||||
}
|
||||
}
|
||||
for _, field := range extra {
|
||||
if field.Key == logs.TagFieldName && field.Type == zapcore.StringType {
|
||||
return !c.settings.LevelEnabled(field.String, entry.Level)
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
return !c.settings.DefaultEnabled(entry.Level)
|
||||
}
|
||||
|
||||
func (c *zapCoreTagFilterWrapper) Sync() error {
|
||||
|
@ -127,14 +130,13 @@ func newLogEncoder() zapcore.Encoder {
|
|||
//
|
||||
// See also zapcore.Level, zap.NewProductionConfig, zap.AddStacktrace.
|
||||
func newStdoutLogger(v *viper.Viper, lvl zap.AtomicLevel, loggerSettings LoggerAppSettings, tagSetting TagFilterSettings) *Logger {
|
||||
stdout := zapcore.AddSync(os.Stderr)
|
||||
stdout := zapcore.AddSync(os.Stdout)
|
||||
|
||||
consoleOutCore := zapcore.NewCore(newLogEncoder(), stdout, lvl)
|
||||
consoleOutCore = applyZapCoreMiddlewares(consoleOutCore, v, loggerSettings, tagSetting)
|
||||
|
||||
return &Logger{
|
||||
logger: zap.New(consoleOutCore, zap.AddStacktrace(zap.NewAtomicLevelAt(zap.FatalLevel))),
|
||||
lvl: lvl,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,7 +154,6 @@ func newJournaldLogger(v *viper.Viper, lvl zap.AtomicLevel, loggerSettings Logge
|
|||
|
||||
return &Logger{
|
||||
logger: zap.New(coreWithContext, zap.AddStacktrace(zap.NewAtomicLevelAt(zap.FatalLevel))),
|
||||
lvl: lvl,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -208,7 +208,6 @@ var defaultTags = []string{logs.TagApp, logs.TagDatapath, logs.TagExternalStorag
|
|||
|
||||
type Logger struct {
|
||||
logger *zap.Logger
|
||||
lvl zap.AtomicLevel
|
||||
}
|
||||
|
||||
type appCfg struct {
|
||||
|
|
Loading…
Add table
Reference in a new issue