runningwater 8 месяцев назад
Родитель
Сommit
fd4d0ca968
1 измененных файлов с 110 добавлено и 0 удалено
  1. 110 0
      pkg/logger/logger.go

+ 110 - 0
pkg/logger/logger.go

@@ -2,6 +2,7 @@
 package logger
 
 import (
+	"encoding/json"
 	"fmt"
 	"os"
 	"strings"
@@ -101,4 +102,113 @@ func getLogWriter(filename string, maxSize, maxBackup, maxAge int, compress bool
 		// 生产环境只记录文件
 		return zapcore.AddSync(lumberJackLogger)
 	}
+}
+
+// Dump 调试专用, 不会中断程序,会在终端打印 warning 信息。
+// 第一个参数会使用 json.Marshal 进行渲染,第二个参数可选
+//    logger.Dump(user.User{Name: "test"})
+//    logger.Dump(user.User{Name: "test"}, "用户信息")
+func Dump(v any, msg ...string) {
+	valueStr := jsonString(v)
+	if len(msg) > 0 {
+		Logger.Warn("Dump", zap.String(msg[0], valueStr))
+	} else {
+		Logger.Warn("Dump", zap.String("data", valueStr))
+	}	
+}
+
+// LogIf 当 err != nill 时记录 error 等级的日志
+func LogIf(err error) {
+	if err != nil {
+		Logger.Error("Error Occurred: ", zap.Error(err))
+	}
+}
+
+// LogWarnIf 当 err != nill 时记录 warning 等级的日志
+func LogWarnIf(err error) {
+	if err != nil {
+		Logger.Warn("Error Occurred: ", zap.Error(err))
+	}
+}
+
+// LogInfoIf 当 err != nill 时记录 info 等级的日志
+func LogInfoIf(err error) {
+	if err != nil {
+		Logger.Info("Error Occurred: ", zap.Error(err))
+	}
+}
+
+// Debug 调试专用, 不会中断程序
+//  logger.Debug("Database", zap.String("sql", sql))
+func Debug(msg string, fields ...zap.Field) {
+	Logger.Debug(msg, fields...)
+}
+
+// Info 信息级别
+func Info(msg string, fields...zap.Field) {
+	Logger.Info(msg, fields...)
+}
+// Warn 警告级别
+func Warn(msg string, fields...zap.Field) {
+	Logger.Warn(msg, fields...)
+}
+// Error 错误级别
+func Error(msg string, fields...zap.Field) {
+	Logger.Error(msg, fields...)
+}
+// Fatal 致命级别
+func Fatal(msg string, fields...zap.Field) {
+	Logger.Fatal(msg, fields...)
+}
+// DebugString 记录一条字符串类型的 debug 日志
+//   logger.DebugString("User", "name", "John")
+func DebugString(modeleName, name, msg string) {
+	Logger.Debug(modeleName, zap.String(name, msg))
+}
+
+
+func InfoString(moduleName, name, msg string) {
+    Logger.Info(moduleName, zap.String(name, msg))
+}
+
+func WarnString(moduleName, name, msg string) {
+    Logger.Warn(moduleName, zap.String(name, msg))
+}
+
+func ErrorString(moduleName, name, msg string) {
+    Logger.Error(moduleName, zap.String(name, msg))
+}
+
+func FatalString(moduleName, name, msg string) {
+    Logger.Fatal(moduleName, zap.String(name, msg))
+}
+
+// DebugJSON 记录对象类型的 debug 日志,使用 json.Marshal 进行编码。调用示例:
+//         logger.DebugJSON("Auth", "读取登录用户", auth.CurrentUser())
+func DebugJSON(moduleName, name string, value any) {
+    Logger.Debug(moduleName, zap.String(name, jsonString(value)))
+}
+
+func InfoJSON(moduleName, name string, value any) {
+    Logger.Info(moduleName, zap.String(name, jsonString(value)))
+}
+
+func WarnJSON(moduleName, name string, value any) {
+    Logger.Warn(moduleName, zap.String(name, jsonString(value)))
+}
+
+func ErrorJSON(moduleName, name string, value any) {
+    Logger.Error(moduleName, zap.String(name, jsonString(value)))
+}
+
+func FatalJSON(moduleName, name string, value any) {
+    Logger.Fatal(moduleName, zap.String(name, jsonString(value)))
+}
+
+func jsonString(v any) string {
+	b,err := json.Marshal(v)
+	if err != nil {
+		Logger.Error("Logger", zap.String("json.Marshal error", err.Error()))
+	}
+	return string(b)
 }