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  }