Skip to content

Commit 650f731

Browse files
committed
opt: prepend [gnet] prefix to every log entry
1 parent a9c2638 commit 650f731

File tree

2 files changed

+60
-16
lines changed

2 files changed

+60
-16
lines changed

gnet_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -887,7 +887,7 @@ func TestServerOptionsCheck(t *testing.T) {
887887
assert.EqualError(t, err, gerr.ErrTooManyEventLoopThreads.Error(), "error returned with LockOSThread option")
888888
}
889889

890-
func TestStop(t *testing.T) {
890+
func TestStopServer(t *testing.T) {
891891
testStop(t, "tcp", ":9997")
892892
}
893893

pkg/logging/logger.go

Lines changed: 59 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import (
5252
"strconv"
5353

5454
"go.uber.org/zap"
55+
"go.uber.org/zap/buffer"
5556
"go.uber.org/zap/zapcore"
5657
"gopkg.in/natefinch/lumberjack.v2"
5758
)
@@ -68,22 +69,22 @@ type Level = zapcore.Level
6869
const (
6970
// DebugLevel logs are typically voluminous, and are usually disabled in
7071
// production.
71-
DebugLevel Level = iota - 1
72+
DebugLevel = zapcore.DebugLevel
7273
// InfoLevel is the default logging priority.
73-
InfoLevel
74+
InfoLevel = zapcore.InfoLevel
7475
// WarnLevel logs are more important than Info, but don't need individual
7576
// human review.
76-
WarnLevel
77+
WarnLevel = zapcore.WarnLevel
7778
// ErrorLevel logs are high-priority. If an application is running smoothly,
7879
// it shouldn't generate any error-level logs.
79-
ErrorLevel
80+
ErrorLevel = zapcore.ErrorLevel
8081
// DPanicLevel logs are particularly important errors. In development the
8182
// logger panics after writing the message.
82-
DPanicLevel
83+
DPanicLevel = zapcore.DPanicLevel
8384
// PanicLevel logs a message, then panics.
84-
PanicLevel
85+
PanicLevel = zapcore.PanicLevel
8586
// FatalLevel logs a message, then calls os.Exit(1).
86-
FatalLevel
87+
FatalLevel = zapcore.FatalLevel
8788
)
8889

8990
func init() {
@@ -105,19 +106,62 @@ func init() {
105106
panic("invalid GNET_LOGGING_FILE, " + err.Error())
106107
}
107108
} else {
108-
cfg := zap.NewDevelopmentConfig()
109-
cfg.Level = zap.NewAtomicLevelAt(defaultLoggingLevel)
110-
cfg.EncoderConfig.EncodeTime = zapcore.RFC3339NanoTimeEncoder
111-
zapLogger, _ := cfg.Build()
109+
core := zapcore.NewCore(getDevEncoder(), zapcore.Lock(os.Stdout), defaultLoggingLevel)
110+
zapLogger := zap.New(core,
111+
zap.Development(),
112+
zap.AddCaller(),
113+
zap.AddStacktrace(ErrorLevel),
114+
zap.ErrorOutput(zapcore.Lock(os.Stderr)))
112115
defaultLogger = zapLogger.Sugar()
113116
}
114117
}
115118

116-
func getEncoder() zapcore.Encoder {
119+
type prefixEncoder struct {
120+
zapcore.Encoder
121+
122+
prefix string
123+
bufPool buffer.Pool
124+
}
125+
126+
func (e *prefixEncoder) EncodeEntry(entry zapcore.Entry, fields []zapcore.Field) (*buffer.Buffer, error) {
127+
buf := e.bufPool.Get()
128+
129+
buf.AppendString(e.prefix)
130+
buf.AppendString(" ")
131+
132+
logEntry, err := e.Encoder.EncodeEntry(entry, fields)
133+
if err != nil {
134+
return nil, err
135+
}
136+
137+
_, err = buf.Write(logEntry.Bytes())
138+
if err != nil {
139+
return nil, err
140+
}
141+
142+
return buf, nil
143+
}
144+
145+
func getDevEncoder() zapcore.Encoder {
146+
encoderConfig := zap.NewDevelopmentEncoderConfig()
147+
encoderConfig.EncodeTime = zapcore.RFC3339NanoTimeEncoder
148+
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
149+
return &prefixEncoder{
150+
Encoder: zapcore.NewConsoleEncoder(encoderConfig),
151+
prefix: "[gnet]",
152+
bufPool: buffer.NewPool(),
153+
}
154+
}
155+
156+
func getProdEncoder() zapcore.Encoder {
117157
encoderConfig := zap.NewProductionEncoderConfig()
118158
encoderConfig.EncodeTime = zapcore.RFC3339NanoTimeEncoder
119159
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
120-
return zapcore.NewConsoleEncoder(encoderConfig)
160+
return &prefixEncoder{
161+
Encoder: zapcore.NewConsoleEncoder(encoderConfig),
162+
prefix: "[gnet]",
163+
bufPool: buffer.NewPool(),
164+
}
121165
}
122166

123167
// GetDefaultLogger returns the default logger.
@@ -144,15 +188,15 @@ func CreateLoggerAsLocalFile(localFilePath string, logLevel Level) (logger Logge
144188
MaxAge: 15, // days
145189
}
146190

147-
encoder := getEncoder()
191+
encoder := getProdEncoder()
148192
ws := zapcore.AddSync(lumberJackLogger)
149193
zapcore.Lock(ws)
150194

151195
levelEnabler := zap.LevelEnablerFunc(func(level Level) bool {
152196
return level >= logLevel
153197
})
154198
core := zapcore.NewCore(encoder, ws, levelEnabler)
155-
zapLogger := zap.New(core, zap.AddCaller())
199+
zapLogger := zap.New(core, zap.AddCaller(), zap.AddStacktrace(ErrorLevel))
156200
logger = zapLogger.Sugar()
157201
flush = zapLogger.Sync
158202
return

0 commit comments

Comments
 (0)