Golang Zap: 如何将日志输出到文件
在使用 Zap 库记录日志时,可以通过配置文件将日志输出到文件中。
首先,需要在代码中创建一个 logger 实例,例如:
import "go.uber.org/zap"
func main() {
logger, err := zap.NewProduction()
if err != nil {
panic(err)
}
defer logger.Sync()
// 使用 logger 记录日志
logger.Info('Hello, world!')
}
接着,可以在代码中配置 logger 输出到文件中:
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
cfg := zap.Config{
Encoding: "json",
Level: zap.NewAtomicLevelAt(zap.DebugLevel),
OutputPaths: []string{"stdout", "/path/to/error.log"},
ErrorOutputPaths: []string{"stderr", "/path/to/error.log"},
EncoderConfig: zapcore.EncoderConfig{
TimeKey: "time",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
MessageKey: "msg",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: zapcore.ISO8601TimeEncoder,
EncodeDuration: zapcore.SecondsDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
},
}
logger, err := cfg.Build()
if err != nil {
panic(err)
}
defer logger.Sync()
// 使用 logger 记录日志
logger.Info('Hello, world!')
}
在上面的代码中,OutputPaths 和 ErrorOutputPaths 分别配置了正常日志和错误日志的输出路径,可以将路径替换为实际的文件路径。
同时,还可以通过 EncoderConfig 对日志的格式进行配置,例如设置时间格式、日志级别、调用者等信息。
最后,使用 logger.Info、logger.Warn、logger.Error 等方法记录日志即可。日志将同时输出到控制台和文件中。
原文地址: https://www.cveoy.top/t/topic/lAwE 著作权归作者所有。请勿转载和采集!