提交 2d6b10f6 作者: Brian Tiger Chow

deps(eventlog) disable logrus' mutation of event keys

now, logrus does not automatically inject time, msg, level metadata

License: MIT
Signed-off-by: 's avatarBrian Tiger Chow <brian@perfmode.com>
上级 b03fbf73
......@@ -133,8 +133,8 @@
},
{
"ImportPath": "github.com/maybebtc/logrus",
"Comment": "v0.6.0-5-gf92b795",
"Rev": "f92b7950b372b1db80bd3527e4d40e42555fe6c2"
"Comment": "v0.6.0-7-g51cc99e",
"Rev": "51cc99e4b07ec5516233a8370c28b5eedd096b6b"
},
{
"ImportPath": "github.com/mitchellh/go-homedir",
......
......@@ -71,9 +71,14 @@ func (entry *Entry) WithFields(fields Fields) *Entry {
}
func (entry *Entry) log(level Level, msg string) {
entry.Time = time.Now()
entry.Level = level
entry.Message = msg
entry.Logger.mu.Lock()
if entry.Logger.WriteFields {
entry.Time = time.Now()
entry.Level = level
entry.Message = msg
}
entry.Logger.mu.Unlock()
if err := entry.Logger.Hooks.Fire(level, entry); err != nil {
entry.Logger.mu.Lock()
......
......@@ -26,6 +26,7 @@ func TestEntryPanicln(t *testing.T) {
logger := New()
logger.Out = &bytes.Buffer{}
logger.WriteFields = true
entry := NewEntry(logger)
entry.WithField("err", errBoom).Panicln("kaboom")
}
......@@ -48,6 +49,7 @@ func TestEntryPanicf(t *testing.T) {
logger := New()
logger.Out = &bytes.Buffer{}
logger.WriteFields = true
entry := NewEntry(logger)
entry.WithField("err", errBoom).Panicf("kaboom %v", true)
}
......@@ -56,6 +56,14 @@ func WithFields(fields Fields) *Entry {
return std.WithFields(fields)
}
// WriteFields gives the Logger permission to add time, level, msg info to
// Entries
func WriteFields(b bool) {
std.mu.Lock()
defer std.mu.Unlock()
std.WriteFields = b
}
// Debug logs a message at level Debug on the standard logger.
func Debug(args ...interface{}) {
std.Debug(args...)
......
......@@ -26,6 +26,11 @@ type Logger struct {
// to) `logrus.Info`, which allows Info(), Warn(), Error() and Fatal() to be
// logged. `logrus.Debug` is useful in
Level Level
// WriteFields permits the logger to add time, msg, level data to
// user-provided Fields
WriteFields bool
// Used to sync writing to the log.
mu sync.Mutex
}
......
......@@ -17,6 +17,7 @@ func LogAndAssertJSON(t *testing.T, log func(*Logger), assertions func(fields Fi
logger := New()
logger.Out = &buffer
logger.Formatter = new(JSONFormatter)
logger.WriteFields = true
log(logger)
......
package logrus
import (
"encoding/json"
"fmt"
)
type PoliteJSONFormatter struct{}
func (f *PoliteJSONFormatter) Format(entry *Entry) ([]byte, error) {
serialized, err := json.Marshal(entry.Data)
if err != nil {
return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err)
}
return append(serialized, '\n'), nil
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论