5 Commits

Author SHA1 Message Date
7eee167d91 update at 2021-01-01 23:12:00 by ehlxr 2021-01-01 23:12:00 +08:00
c03451395f modify text encoder format bug 2020-12-31 17:26:35 +08:00
48e8f68955 format field content style 2020-12-31 17:16:11 +08:00
7b9983504f format field content style 2020-12-31 17:15:59 +08:00
6ac40ca1a2 format field content style 2020-12-31 17:15:40 +08:00
5 changed files with 38 additions and 22 deletions

View File

@@ -55,7 +55,7 @@ func NewTextEncoder(cfg zapcore.EncoderConfig) zapcore.Encoder {
return &textEncoder{ return &textEncoder{
EncoderConfig: &cfg, EncoderConfig: &cfg,
buf: bufferpool.Get(), buf: bufferpool.Get(),
spaced: false, spaced: true,
} }
} }
@@ -68,12 +68,13 @@ func (enc textEncoder) EncodeEntry(ent zapcore.Entry, fields []zapcore.Field) (*
if enc.TimeKey != "" && enc.EncodeTime != nil { if enc.TimeKey != "" && enc.EncodeTime != nil {
enc.EncodeTime(ent.Time, arr) enc.EncodeTime(ent.Time, arr)
} }
if enc.LevelKey != "" && enc.EncodeLevel != nil { if enc.LevelKey != "" && enc.EncodeLevel != nil {
enc.EncodeLevel(ent.Level, arr) enc.EncodeLevel(ent.Level, arr)
} }
if ent.LoggerName != "" && enc.NameKey != "" { if ent.LoggerName != "" && enc.NameKey != "" {
nameEncoder := enc.EncodeName nameEncoder := enc.EncodeName
if nameEncoder == nil { if nameEncoder == nil {
// Fall back to FullNameEncoder for backward compatibility. // Fall back to FullNameEncoder for backward compatibility.
nameEncoder = zapcore.FullNameEncoder nameEncoder = zapcore.FullNameEncoder
@@ -81,17 +82,23 @@ func (enc textEncoder) EncodeEntry(ent zapcore.Entry, fields []zapcore.Field) (*
nameEncoder(ent.LoggerName, arr) nameEncoder(ent.LoggerName, arr)
} }
if ent.Caller.Defined && enc.CallerKey != "" && enc.EncodeCaller != nil { if ent.Caller.Defined && enc.CallerKey != "" && enc.EncodeCaller != nil {
enc.EncodeCaller(ent.Caller, arr) enc.EncodeCaller(ent.Caller, arr)
} }
for i := range arr.elems { for i := range arr.elems {
// if i > 0 { // if i > 0 {
// line.AppendByte('\t') // line.AppendByte('\t')
// } // }
_, _ = fmt.Fprint(line, arr.elems[i]) _, _ = fmt.Fprint(line, arr.elems[i])
} }
putSliceEncoder(arr) putSliceEncoder(arr)
// Add any structured context.
enc.writeContext(line, fields)
// Add the message itself. // Add the message itself.
if enc.MessageKey != "" { if enc.MessageKey != "" {
// c.addTabIfNecessary(line) // c.addTabIfNecessary(line)
@@ -99,9 +106,6 @@ func (enc textEncoder) EncodeEntry(ent zapcore.Entry, fields []zapcore.Field) (*
line.AppendString(ent.Message) line.AppendString(ent.Message)
} }
// Add any structured context.
enc.writeContext(line, fields)
// If there's no stacktrace key, honor that; this allows users to force // If there's no stacktrace key, honor that; this allows users to force
// single-line output. // single-line output.
if ent.Stack != "" && enc.StacktraceKey != "" { if ent.Stack != "" && enc.StacktraceKey != "" {
@@ -114,6 +118,7 @@ func (enc textEncoder) EncodeEntry(ent zapcore.Entry, fields []zapcore.Field) (*
} else { } else {
line.AppendString(zapcore.DefaultLineEnding) line.AppendString(zapcore.DefaultLineEnding)
} }
return line, nil return line, nil
} }
@@ -128,9 +133,10 @@ func (enc textEncoder) writeContext(line *buffer.Buffer, extra []zapcore.Field)
} }
// c.addTabIfNecessary(line) // c.addTabIfNecessary(line)
line.AppendByte('{') // line.AppendByte('{')
line.AppendByte(' ')
_, _ = line.Write(context.buf.Bytes()) _, _ = line.Write(context.buf.Bytes())
line.AppendByte('}') // line.AppendByte('}')
} }
func (enc textEncoder) addTabIfNecessary(line *buffer.Buffer) { func (enc textEncoder) addTabIfNecessary(line *buffer.Buffer) {
@@ -216,11 +222,13 @@ func (enc *textEncoder) AddDuration(key string, val time.Duration) {
func (enc *textEncoder) AddFloat64(key string, val float64) { func (enc *textEncoder) AddFloat64(key string, val float64) {
enc.addKey(key) enc.addKey(key)
enc.appendFloat(val, 64) enc.appendFloat(val, 64)
enc.buf.AppendByte(']')
} }
func (enc *textEncoder) AddInt64(key string, val int64) { func (enc *textEncoder) AddInt64(key string, val int64) {
enc.addKey(key) enc.addKey(key)
enc.addElementSeparator() enc.addElementSeparator()
enc.buf.AppendInt(val) enc.buf.AppendInt(val)
enc.buf.AppendByte(']')
} }
func (enc *textEncoder) AddReflected(key string, obj interface{}) error { func (enc *textEncoder) AddReflected(key string, obj interface{}) error {
enc.resetReflectBuf() enc.resetReflectBuf()
@@ -241,9 +249,10 @@ func (enc *textEncoder) OpenNamespace(key string) {
func (enc *textEncoder) AddString(key, val string) { func (enc *textEncoder) AddString(key, val string) {
enc.addKey(key) enc.addKey(key)
enc.addElementSeparator() enc.addElementSeparator()
enc.buf.AppendByte('"') // enc.buf.AppendByte('"')
enc.safeAddString(val) enc.safeAddString(val)
enc.buf.AppendByte('"') // enc.buf.AppendByte('"')
enc.buf.AppendByte(']')
} }
func (enc *textEncoder) AddTime(key string, val time.Time) { func (enc *textEncoder) AddTime(key string, val time.Time) {
enc.addKey(key) enc.addKey(key)
@@ -261,6 +270,7 @@ func (enc *textEncoder) AddUint64(key string, val uint64) {
enc.addKey(key) enc.addKey(key)
enc.addElementSeparator() enc.addElementSeparator()
enc.buf.AppendUint(val) enc.buf.AppendUint(val)
enc.buf.AppendByte(']')
} }
//noinspection GoRedundantConversion //noinspection GoRedundantConversion
@@ -293,9 +303,10 @@ func (enc *textEncoder) clone() *textEncoder {
func (enc *textEncoder) addKey(key string) { func (enc *textEncoder) addKey(key string) {
enc.addElementSeparator() enc.addElementSeparator()
enc.buf.AppendByte('"') // enc.buf.AppendByte('"')
enc.buf.AppendByte('[')
enc.safeAddString(key) enc.safeAddString(key)
enc.buf.AppendByte('"') // enc.buf.AppendByte('"')
enc.buf.AppendByte(':') enc.buf.AppendByte(':')
if enc.spaced { if enc.spaced {
enc.buf.AppendByte(' ') enc.buf.AppendByte(' ')

11
log.go
View File

@@ -35,6 +35,7 @@ type logConfig struct {
CrashLogFilename string CrashLogFilename string
ErrorLogFilename string ErrorLogFilename string
EnableLineNumber bool EnableLineNumber bool
AddCallerSkip int
// enable the truncation of the level text to 4 characters. // enable the truncation of the level text to 4 characters.
EnableLevelTruncation bool EnableLevelTruncation bool
@@ -62,6 +63,10 @@ func (config *logConfig) Init() {
logger = config.newLogger().Sugar() logger = config.newLogger().Sugar()
} }
func (config *logConfig) New() *zap.SugaredLogger {
return config.newLogger().Sugar()
}
func NewLogConfig() *logConfig { func NewLogConfig() *logConfig {
return &logConfig{ return &logConfig{
Level: DebugLevel, Level: DebugLevel,
@@ -113,7 +118,7 @@ func (config *logConfig) newLogger() *zap.Logger {
var options []zap.Option var options []zap.Option
if config.EnableLineNumber { if config.EnableLineNumber {
options = append(options, zap.AddCaller(), zap.AddCallerSkip(1)) options = append(options, zap.AddCaller(), zap.AddCallerSkip(config.AddCallerSkip))
} }
if config.EnableErrorStacktrace { if config.EnableErrorStacktrace {
@@ -265,3 +270,7 @@ func writeCrashLog(file string) {
func Fields(args ...interface{}) { func Fields(args ...interface{}) {
logger = logger.With(args...) logger = logger.With(args...)
} }
func With(l *zap.SugaredLogger, args ...interface{}) *zap.SugaredLogger {
return l.With(args...)
}

View File

@@ -15,16 +15,16 @@ func TestLog(t *testing.T) {
func TestLogWithConfig(t *testing.T) { func TestLogWithConfig(t *testing.T) {
config := NewLogConfig() config := NewLogConfig()
_ = config.Level.Set("d") _ = config.Level.Set("debug")
config.Name = "main" config.Name = "main"
// config.Fields = []zap.Field{zap.String("traceid", "12123123123")} // config.Fields = []zap.Field{zap.String("traceid", "12123123123")}
config.Init() config.Init()
With("foo", "baz") Fields("traceid", float64(21221212122))
Debugf("this is %s message", "debug") Debugf("this is %s message", "debug")
config.Init() config.Init()
With(zap.String("traceid", "12123123123")) Fields(zap.String("traceid", "12123123123"))
Infof("this is %s message", "info") Infof("this is %s message", "info")
// Errorf("this is %s message", "error") // Errorf("this is %s message", "error")
// Panicf("this is %s message", "panic") // Panicf("this is %s message", "panic")

View File

@@ -1,9 +1,5 @@
package log package log
func With(args ...interface{}) {
logger = logger.With(args...)
}
func Debug(args ...interface{}) { func Debug(args ...interface{}) {
logger.Debug(args...) logger.Debug(args...)
} }

View File

@@ -1 +1 @@
v0.0.6 v0.0.9