gitee.com/KyleChenSource/lib-robot@v1.0.2/robottest/log/log.go (about) 1 package log 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/natefinch/lumberjack" 8 "go.uber.org/zap" 9 "go.uber.org/zap/zapcore" 10 ) 11 12 type LogLevel int 13 14 var ( 15 logger *zap.Logger 16 logLevel LogLevel 17 ) 18 19 const ( 20 LogLevel_Debug LogLevel = iota 21 LogLevel_Info 22 LogLevel_Warn 23 LogLevel_Error 24 ) 25 26 func LogInitialize(logFile string, l LogLevel) error { 27 fmt.Printf("log.LogInitialize %s level:%d\n", logFile, l) 28 if len(logFile) == 0 { 29 logFile = "robot.log" 30 } 31 32 cfg := zap.NewProductionConfig() 33 cfg.EncoderConfig.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { 34 enc.AppendString(t.Format("[2006-01-02 15:04:05.000]")) 35 } 36 37 cfg.EncoderConfig.EncodeCaller = func(e zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { 38 enc.AppendString(fmt.Sprintf("[%s]", e.TrimmedPath())) 39 } 40 41 core := zapcore.NewCore( 42 zapcore.NewConsoleEncoder(cfg.EncoderConfig), 43 zapcore.AddSync(&lumberjack.Logger{ 44 Filename: logFile, // 文件位置 45 MaxSize: 100, // 进行切割之前,日志文件的最大大小(MB为单位) 46 LocalTime: true, 47 }), 48 zapcore.DebugLevel, 49 ) 50 51 logger = zap.New(core, zap.WithCaller(true), zap.AddCallerSkip(1) /*, zap.AddStacktrace(zapcore.DebugLevel)*/) 52 53 logLevel = l 54 return nil 55 } 56 57 func LogUnitialize() { 58 logger.Sync() 59 fmt.Println("log.LogUnitialize") 60 } 61 62 func LogDebug(format string, v ...interface{}) { 63 // logger_debug.Output(2, fmt.Sprintf(format, v...)) 64 if logLevel > LogLevel_Debug { 65 return 66 } 67 logger.Debug(fmt.Sprintf(format, v...)) 68 } 69 70 func LogInfo(format string, v ...interface{}) { 71 if logLevel > LogLevel_Info { 72 return 73 } 74 logger.Info(fmt.Sprintf(format, v...)) 75 } 76 77 func LogWarn(format string, v ...interface{}) { 78 if logLevel > LogLevel_Warn { 79 return 80 } 81 logger.Warn(fmt.Sprintf(format, v...)) 82 } 83 84 func LogError(format string, v ...interface{}) { 85 logger.Error(fmt.Sprintf(format, v...)) 86 }