#zap は高パフォーマンスのログ ライブラリです。ここでは、zap の使い方について簡単に説明します。
1. ZAP バッグをダウンロード (推奨学習: Go )
## ZAP は Uber のオープンソースであるため、ZAP使用されるパッケージは go.uber.org/zap にあります。このパッケージを直接取得しようとすると、取得できないというメッセージが表示される場合があります。
github.com/uber-go/zap を取得し、zap ディレクトリを src/go.uber.org にコピーします (go.uber.org/atomic と も必要な場合があります)。 go.uber.org/multierr、このメソッドを参照して取得できます)2.zap 単純なカプセル化の例。
package logger import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" ) // error logger var errorLogger *zap.SugaredLogger var levelMap = map[string]zapcore.Level{ "debug": zapcore.DebugLevel, "info": zapcore.InfoLevel, "warn": zapcore.WarnLevel, "error": zapcore.ErrorLevel, "dpanic": zapcore.DPanicLevel, "panic": zapcore.PanicLevel, "fatal": zapcore.FatalLevel, } func getLoggerLevel(lvl string) zapcore.Level { if level, ok := levelMap[lvl]; ok { return level } return zapcore.InfoLevel } func init() { fileName := "zap.log" level := getLoggerLevel("debug") syncWriter := zapcore.AddSync(&lumberjack.Logger{ Filename: fileName, MaxSize: 1 << 30, //1G LocalTime: true, Compress: true, }) encoder := zap.NewProductionEncoderConfig() encoder.EncodeTime = zapcore.ISO8601TimeEncoder core := zapcore.NewCore(zapcore.NewJSONEncoder(encoder), syncWriter, zap.NewAtomicLevelAt(level)) logger := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1)) errorLogger = logger.Sugar() } func Debug(args ...interface{}) { errorLogger.Debug(args...) } func Debugf(template string, args ...interface{}) { errorLogger.Debugf(template, args...) } func Info(args ...interface{}) { errorLogger.Info(args...) } func Infof(template string, args ...interface{}) { errorLogger.Infof(template, args...) } func Warn(args ...interface{}) { errorLogger.Warn(args...) } func Warnf(template string, args ...interface{}) { errorLogger.Warnf(template, args...) } func Error(args ...interface{}) { errorLogger.Error(args...) } func Errorf(template string, args ...interface{}) { errorLogger.Errorf(template, args...) } func DPanic(args ...interface{}) { errorLogger.DPanic(args...) } func DPanicf(template string, args ...interface{}) { errorLogger.DPanicf(template, args...) } func Panic(args ...interface{}) { errorLogger.Panic(args...) } func Panicf(template string, args ...interface{}) { errorLogger.Panicf(template, args...) } func Fatal(args ...interface{}) { errorLogger.Fatal(args...) } func Fatalf(template string, args ...interface{}) { errorLogger.Fatalf(template, args...) }
単純なカプセル化後の使用例:
package main import ( "logger" ) func main() { logger.Infof("simple zap logger example") }
以上がgolangのzapの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。