[] 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 {
|
tagsConfig struct {
|
||||||
tagLogs sync.Map
|
tagLogs sync.Map
|
||||||
|
defaultLvl zap.AtomicLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
logLevelConfig struct {
|
logLevelConfig struct {
|
||||||
|
@ -170,23 +171,21 @@ func (t *tagsConfig) LevelEnabled(tag string, tgtLevel zapcore.Level) bool {
|
||||||
return lvl.(zapcore.Level).Enabled(tgtLevel)
|
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 {
|
func (t *tagsConfig) update(cfg *viper.Viper, ll zapcore.Level) error {
|
||||||
tags, err := fetchLogTagsConfig(cfg, ll)
|
tags, err := fetchLogTagsConfig(cfg, ll)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
t.tagLogs.Range(func(key, value any) bool {
|
t.tagLogs.Range(func(key, _ any) bool {
|
||||||
k := key.(string)
|
k := key.(string)
|
||||||
v := value.(zapcore.Level)
|
|
||||||
|
|
||||||
if lvl, ok := tags[k]; ok {
|
if _, ok := tags[k]; !ok {
|
||||||
if lvl != v {
|
|
||||||
t.tagLogs.Store(key, lvl)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
t.tagLogs.Delete(key)
|
t.tagLogs.Delete(key)
|
||||||
delete(tags, k)
|
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
@ -194,6 +193,7 @@ func (t *tagsConfig) update(cfg *viper.Viper, ll zapcore.Level) error {
|
||||||
for k, v := range tags {
|
for k, v := range tags {
|
||||||
t.tagLogs.Store(k, v)
|
t.tagLogs.Store(k, v)
|
||||||
}
|
}
|
||||||
|
t.defaultLvl.SetLevel(ll)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ type zapCoreTagFilterWrapper struct {
|
||||||
|
|
||||||
type TagFilterSettings interface {
|
type TagFilterSettings interface {
|
||||||
LevelEnabled(tag string, lvl zapcore.Level) bool
|
LevelEnabled(tag string, lvl zapcore.Level) bool
|
||||||
|
DefaultEnabled(lvl zapcore.Level) bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *zapCoreTagFilterWrapper) Enabled(level 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 {
|
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 nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.core.Write(entry, fields)
|
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 {
|
for _, field := range fields {
|
||||||
if field.Key == logs.TagFieldName && field.Type == zapcore.StringType {
|
if field.Key == logs.TagFieldName && field.Type == zapcore.StringType {
|
||||||
if !c.settings.LevelEnabled(field.String, entry.Level) {
|
return !c.settings.LevelEnabled(field.String, entry.Level)
|
||||||
return true
|
}
|
||||||
}
|
}
|
||||||
break
|
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 {
|
func (c *zapCoreTagFilterWrapper) Sync() error {
|
||||||
|
@ -127,14 +130,13 @@ func newLogEncoder() zapcore.Encoder {
|
||||||
//
|
//
|
||||||
// See also zapcore.Level, zap.NewProductionConfig, zap.AddStacktrace.
|
// See also zapcore.Level, zap.NewProductionConfig, zap.AddStacktrace.
|
||||||
func newStdoutLogger(v *viper.Viper, lvl zap.AtomicLevel, loggerSettings LoggerAppSettings, tagSetting TagFilterSettings) *Logger {
|
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 := zapcore.NewCore(newLogEncoder(), stdout, lvl)
|
||||||
consoleOutCore = applyZapCoreMiddlewares(consoleOutCore, v, loggerSettings, tagSetting)
|
consoleOutCore = applyZapCoreMiddlewares(consoleOutCore, v, loggerSettings, tagSetting)
|
||||||
|
|
||||||
return &Logger{
|
return &Logger{
|
||||||
logger: zap.New(consoleOutCore, zap.AddStacktrace(zap.NewAtomicLevelAt(zap.FatalLevel))),
|
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{
|
return &Logger{
|
||||||
logger: zap.New(coreWithContext, zap.AddStacktrace(zap.NewAtomicLevelAt(zap.FatalLevel))),
|
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 {
|
type Logger struct {
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
lvl zap.AtomicLevel
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type appCfg struct {
|
type appCfg struct {
|
||||||
|
|
Loading…
Add table
Reference in a new issue