github.com/yoogoc/kratos-scaffold@v0.0.0-20240402032722-a538b3c18955/project_generator/resources/log.log.go.tmpl (about) 1 {{- /*gotype: github.com/yoogoc/kratos-scaffold/project_generator.LogTmpl*/ -}} 2 package log 3 4 import ( 5 "{{.AppPkgPath}}/internal/conf" 6 "{{.ModName}}/pkg/contrib" 7 "os" 8 9 "github.com/go-kratos/kratos/v2/log" 10 "github.com/google/wire" 11 "go.uber.org/zap" 12 "go.uber.org/zap/zapcore" 13 ) 14 15 // log level: debug info warn error dpanic panic fatal 16 17 type VersionString string 18 type NameString string 19 20 var ProviderSet = wire.NewSet(NewZapLogger, NewKratosLogger) 21 22 func NewZapLogger(config *conf.Log) *zap.Logger { 23 encoderConfig := zapcore.EncoderConfig{ 24 TimeKey: "t", 25 LevelKey: "level", 26 NameKey: "logger", 27 CallerKey: "caller", 28 MessageKey: "msg", 29 StacktraceKey: "stack", 30 EncodeTime: zapcore.ISO8601TimeEncoder, 31 LineEnding: zapcore.DefaultLineEnding, 32 EncodeLevel: zapcore.LowercaseLevelEncoder, 33 EncodeDuration: zapcore.SecondsDurationEncoder, 34 EncodeCaller: zapcore.FullCallerEncoder, 35 } 36 37 if config == nil { 38 config = new(conf.Log) 39 } 40 41 if config.Level == "" { 42 config.Level = "debug" 43 } 44 level, _ := zap.ParseAtomicLevel(config.Level) 45 46 encoder := zapcore.NewJSONEncoder(encoderConfig) 47 core := zapcore.NewCore( 48 encoder, 49 zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout)), 50 level, 51 ) 52 zapLogger := zap.New(core, 53 zap.AddStacktrace(zap.NewAtomicLevelAt(zapcore.ErrorLevel)), 54 zap.AddCaller(), 55 zap.AddCallerSkip(2), 56 zap.Development()) 57 return zapLogger 58 } 59 60 func NewKratosLogger(zlog *zap.Logger, conf *conf.Log, name NameString, version VersionString) log.Logger { 61 if conf != nil && conf.Type == "zap" { 62 return log.With(contrib.NewLogger(zlog), 63 "service.name", name, 64 "service.version", version, 65 ) 66 } 67 return log.With(log.NewStdLogger(os.Stdout), 68 "service.name", name, 69 "service.version", version, 70 "ts", log.DefaultTimestamp, 71 "caller", log.DefaultCaller, 72 ) 73 }