package log import ( "fmt" "leafstalk/otherutils/system" "runtime/debug" "go.uber.org/zap" ) // ZapLogger 包装了一个 Logger 实例 type ZapLogger struct { sugarLogger *zap.SugaredLogger writer *asyncWriter } var ( logger *ZapLogger ) func InitCustomLogger(appName string) Logger { isWriteToConsole := false if system.IsWindows() { isWriteToConsole = true // Windows默认开启控制台 } filePath := fmt.Sprintf("../logs/%s", appName) sugarLogger, asyncWriter := InitLogger(filePath, isWriteToConsole) logger = &ZapLogger{ sugarLogger: sugarLogger, writer: asyncWriter, } return logger // close := func() { // log.Sync() // close(w.entryChan) // w.wg.Wait() // } // l := new(CustomLogger) // l.logger = log // l.Close = close // logger = l // return l } // func L() *CustomLogger { // return logger // } // Info 记录一条信息级别的日志 func (c *ZapLogger) Info(args ...interface{}) { c.sugarLogger.Info(args...) } // Infof 格式化记录一条信息级别的日志 func (c *ZapLogger) Infof(format string, args ...interface{}) { c.sugarLogger.Infof(format, args...) } // Infoln 记录一条信息级别的日志,并在末尾添加换行符 // func (c *ZapLogger) Infow(msg string, keysAndValues ...interface{}) { // c.sugarLogger.Infow(msg, keysAndValues...) // } // Warn 记录一条警告级别的日志 func (c *ZapLogger) Warn(args ...interface{}) { c.sugarLogger.Warn(args...) } // Warnf 格式化记录一条警告级别的日志 func (c *ZapLogger) Warnf(format string, args ...interface{}) { c.sugarLogger.Warnf(format, args...) } // Warnln 记录一条警告级别的日志,并在末尾添加换行符 // func (c *ZapLogger) Warnw(msg string, keysAndValues ...interface{}) { // c.sugarLogger.Warnw(msg, keysAndValues...) // } // Error 记录一条错误级别的日志 func (c *ZapLogger) Error(args ...interface{}) { c.sugarLogger.Error(args...) } // Errorf 格式化记录一条错误级别的日志 func (c *ZapLogger) Errorf(format string, args ...interface{}) { c.sugarLogger.Errorf(format, args...) } // Errorln 记录一条错误级别的日志,并在末尾添加换行符 // func (c *ZapLogger) Errorw(msg string, keysAndValues ...interface{}) { // c.sugarLogger.Errorw(msg, keysAndValues...) // } // Debug 记录一条调试级别的日志 func (c *ZapLogger) Debug(args ...interface{}) { c.sugarLogger.Debug(args...) } // Debugf 格式化记录一条调试级别的日志 func (c *ZapLogger) Debugf(format string, args ...interface{}) { c.sugarLogger.Debugf(format, args...) } // Debugln 记录一条调试级别的日志,并在末尾添加换行符 // func (c *ZapLogger) Debugw(msg string, keysAndValues ...interface{}) { // c.sugarLogger.Debugw(msg, keysAndValues...) // } // Panic 记录一条致命级别的日志并触发 panic func (c *ZapLogger) Panic(args ...interface{}) { c.sugarLogger.Error(args...) c.sugarLogger.Panic(string(debug.Stack())) } // Panicf 格式化记录一条致命级别的日志并触发 panic func (c *ZapLogger) Panicf(format string, args ...interface{}) { c.sugarLogger.Errorf(format, args...) c.sugarLogger.Panic(string(debug.Stack())) } // Panicln 记录一条致命级别的日志并触发 panic,并在末尾添加换行符 // func (c *ZapLogger) Panicw(msg string, keysAndValues ...interface{}) { // c.sugarLogger.Errorw(msg, keysAndValues...) // c.sugarLogger.Panic(string(debug.Stack())) // } // Fatal 记录一条致命级别的日志并调用 os.Exit(1) func (c *ZapLogger) Fatal(args ...interface{}) { c.sugarLogger.Error(args...) c.sugarLogger.Fatal(string(debug.Stack())) } // Fatalf 格式化记录一条致命级别的日志并调用 os.Exit(1) func (c *ZapLogger) Fatalf(format string, args ...interface{}) { c.sugarLogger.Errorf(format, args...) c.sugarLogger.Fatal(string(debug.Stack())) } func (zl *ZapLogger) Stop() { zl.sugarLogger.Sync() // 同步缓存 zl.writer.Stop() // 停止异步写入器 }