mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 17:44:02 +03:00
Add new BindJSON method to a logger
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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) {}
|
||||
|
||||
@@ -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:
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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{})
|
||||
|
||||
|
||||
@@ -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) {}
|
||||
|
||||
Reference in New Issue
Block a user