0%

【Go】使用 zap 日志库

代码

loging\logging.go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package logging

import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"os"
)

const logPath = "./log.txt"

func SugaredLogger() *zap.SugaredLogger {
return zap.S()
}

func init() {
encoder := getEncoder()
writeSyncer := getWriteSyncer()
core := zapcore.NewCore(encoder, writeSyncer, zap.DebugLevel)
logger := zap.New(core, zap.AddCaller(), zap.AddStacktrace(zap.ErrorLevel))
zap.ReplaceGlobals(logger)
}

func getEncoder() zapcore.Encoder {
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
return zapcore.NewConsoleEncoder(encoderConfig)
}

func getWriteSyncer() zapcore.WriteSyncer {
f, err := os.OpenFile(logPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
panic(err)
}
return zapcore.NewMultiWriteSyncer(zapcore.AddSync(f), zapcore.AddSync(os.Stdout))
}

使用

main.go

1
2
3
4
5
6
7
8
9
10
11
12
package main

import (
"GoCode/logging"
)

var log = logging.SugaredLogger()

func main() {
log.Info("Hello zap")
}

1
2023-02-06T01:26:29.514+0800	INFO	GoCode/main.go:11	Hello zap