This commit is contained in:
oneao committed 2025-08-15 22:26:59 +08:00
1 parent 11bf4e1e76
commit 2d036f4d95
7 files changed
+98 -13

No files matched your search

+46 -9
View File
@@ -1,6 +1,7 @@
package logx
import (
"base-framework/pkg/utils/uid"
"fmt"
"os"
"path/filepath"
@@ -14,6 +15,7 @@ import (
"go.uber.org/zap/zapcore"
)
// ----------------- 全局变量 -----------------
var (
Logger *zap.Logger
@@ -30,6 +32,7 @@ var (
errorCore zapcore.Core
)
const LogID = "log_id"
const logTmFmtWithMS = "2006-01-02 15:04:05.000"
// 彩色日志级别
@@ -43,7 +46,38 @@ var levelColor = map[zapcore.Level]string{
zapcore.FatalLevel: "\033[35mFATAL\033[0m",
}
// defaultLogConfig 返回默认日志配置
// ----------------- trackCore -----------------
// trackCore 包装 zapcore.Core,实现自动生成 track_id
type trackCore struct {
zapcore.Core
}
func (c *trackCore) With(fields []zapcore.Field) zapcore.Core {
return &trackCore{Core: c.Core.With(fields)}
}
func (c *trackCore) Check(entry zapcore.Entry, ce *zapcore.CheckedEntry) *zapcore.CheckedEntry {
if c.Enabled(entry.Level) {
return ce.AddCore(entry, c)
}
return ce
}
func (c *trackCore) Write(entry zapcore.Entry, fields []zapcore.Field) error {
hasTrackID := false
for _, f := range fields {
if f.Key == LogID {
hasTrackID = true
break
}
}
if !hasTrackID {
fields = append(fields, Uint64(LogID, uid.NextID()))
}
return c.Core.Write(entry, fields)
}
// ----------------- 默认日志配置 -----------------
func defaultLogConfig() *types.Log {
return &types.Log{
Dir: "logs",
@@ -57,7 +91,7 @@ func defaultLogConfig() *types.Log {
}
}
// InitLogger 初始化全局 Logger
// ----------------- 初始化 -----------------
func InitLogger() {
once.Do(func() {
if config.Log == nil {
@@ -68,7 +102,6 @@ func InitLogger() {
})
}
// 切换日志文件
func switchDate(today string) {
currentDate = today
@@ -120,14 +153,18 @@ func switchDate(today string) {
return lvl >= zapcore.ErrorLevel
}))
cores := []zapcore.Core{infoCore, warnCore, errorCore}
cores := []zapcore.Core{
&trackCore{infoCore},
&trackCore{warnCore},
&trackCore{errorCore},
}
// 开启本地console输出
// 开启 console 输出
if config.Log.Console {
consoleCore := zapcore.NewCore(newConsoleEncoder(true), zapcore.AddSync(os.Stdout), zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zapcore.DebugLevel
}))
cores = append(cores, consoleCore)
cores = append(cores, &trackCore{consoleCore})
}
Logger = zap.New(zapcore.NewTee(cores...))
@@ -145,6 +182,7 @@ func switchDate(today string) {
}))
}
// ----------------- 编码器 -----------------
func newConsoleEncoder(enableColor bool) zapcore.Encoder {
cfg := zapcore.EncoderConfig{
TimeKey: "ts",
@@ -166,13 +204,11 @@ func newConsoleEncoder(enableColor bool) zapcore.Encoder {
enc.AppendString(lvl.CapitalString())
}
},
//ConsoleSeparator: "",
EncodeCaller: func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) {
pid := os.Getpid()
enc.AppendString(fmt.Sprintf("%d --- %s", pid, caller.TrimmedPath()))
enc.AppendString(fmt.Sprintf("[%d] %s", pid, caller.TrimmedPath()))
},
}
return zapcore.NewConsoleEncoder(cfg)
}
@@ -187,6 +223,7 @@ func newJSONEncoder() zapcore.Encoder {
return zapcore.NewJSONEncoder(cfg)
}
// ----------------- 工具函数 -----------------
func checkDateSwitch() {
today := time.Now().Format("2006-01-02")
if today != currentDate {
@@ -6,6 +6,7 @@ import (
)
type ErrorInfo struct {
Id string `json:"id,omitempty"`
Method string `json:"method,omitempty"`
Path string `json:"path,omitempty"`
Message string `json:"message,omitempty"`
@@ -1,4 +1,4 @@
package snowflake
package uid
import (
"base-framework/pkg/config"