Merge pull request #214 from 9seconds/log-json

Add new BindJSON method to a logger
This commit is contained in:
Sergey Arkhipov
2021-10-04 12:22:43 +03:00
committed by GitHub
5 changed files with 20 additions and 1 deletions
+1 -1
View File
@@ -156,7 +156,7 @@ func makeEventStream(conf *config.Config, logger mtglib.Logger) (mtglib.EventStr
func runProxy(conf *config.Config, version string) error {
logger := makeLogger(conf)
logger.BindStr("configuration", conf.String()).Debug("configuration")
logger.BindJSON("configuration", conf.String()).Debug("configuration")
ntw, err := makeNetwork(conf, version)
if err != nil {
+1
View File
@@ -7,6 +7,7 @@ type noopLogger struct{}
func (n noopLogger) Named(_ string) mtglib.Logger { return n }
func (n noopLogger) BindInt(_ string, _ int) mtglib.Logger { return n }
func (n noopLogger) BindStr(_, _ string) mtglib.Logger { return n }
func (n noopLogger) BindJSON(_, _ string) mtglib.Logger { return n }
func (n noopLogger) Printf(_ string, _ ...interface{}) {}
func (n noopLogger) Info(_ string) {}
func (n noopLogger) Warning(_ string) {}
+14
View File
@@ -15,6 +15,7 @@ const (
zeroLogContextVarTypeUnknown zeroLogContextVarType = iota
zeroLogContextVarTypeStr
zeroLogContextVarTypeInt
zeroLogContextVarTypeJSON
)
type zeroLogContext struct {
@@ -66,6 +67,17 @@ func (z *zeroLogContext) BindStr(name, value string) mtglib.Logger {
}
}
func (z *zeroLogContext) BindJSON(name, value string) mtglib.Logger {
return &zeroLogContext{
name: z.name,
log: z.log,
ctxVarType: zeroLogContextVarTypeJSON,
ctxVarName: name,
ctxVarStr: value,
parent: z,
}
}
func (z *zeroLogContext) Printf(format string, args ...interface{}) {
z.Debug(fmt.Sprintf(format, args...))
}
@@ -110,6 +122,8 @@ func (z *zeroLogContext) attachCtx(evt *zerolog.Event) {
evt.Str(z.ctxVarName, z.ctxVarStr)
case zeroLogContextVarTypeInt:
evt.Int(z.ctxVarName, z.ctxVarInt)
case zeroLogContextVarTypeJSON:
evt.RawJSON(z.ctxVarName, []byte(z.ctxVarStr))
case zeroLogContextVarTypeUnknown:
}
}
+3
View File
@@ -245,6 +245,9 @@ type Logger interface {
// BindStr binds new string parameter to a new logger instance.
BindStr(name, value string) Logger
// BindJSON binds a new JSON-encoded string to a new logger instance.
BindJSON(name, value string) Logger
// Printf is to support log.Logger behavior.
Printf(format string, args ...interface{})
+1
View File
@@ -11,6 +11,7 @@ type NoopLogger struct{}
func (n NoopLogger) Named(_ string) Logger { return n }
func (n NoopLogger) BindInt(_ string, _ int) Logger { return n }
func (n NoopLogger) BindStr(_, _ string) Logger { return n }
func (n NoopLogger) BindJSON(_, _ string) Logger { return n }
func (n NoopLogger) Printf(_ string, _ ...interface{}) {}
func (n NoopLogger) Info(_ string) {}
func (n NoopLogger) Warning(_ string) {}