45 lines
1.4 KiB
Go
45 lines
1.4 KiB
Go
package core
|
|
|
|
import (
|
|
"fmt"
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
"os"
|
|
"sundynix-go/core/internal"
|
|
"sundynix-go/global"
|
|
"sundynix-go/utils"
|
|
)
|
|
|
|
// Zap 函数用于初始化并返回一个 zap.Logger 实例。
|
|
// 该函数会检查日志目录是否存在,如果不存在则创建该目录。
|
|
// 根据配置中的日志级别,创建对应的 zapcore.Core,并将它们合并为一个 zap.Logger。
|
|
// 如果配置中启用了显示行号,则会在日志中添加调用者信息。
|
|
// 返回值:
|
|
// - logger: 初始化后的 zap.Logger 实例,用于记录日志。
|
|
func Zap() (logger *zap.Logger) {
|
|
// 检查日志目录是否存在,如果不存在则创建
|
|
if ok, _ := utils.PathExist(global.Config.Zap.Director); !ok {
|
|
fmt.Printf("日志目录 %v 不存在,创建中...\n", global.Config.Zap.Director)
|
|
_ = os.Mkdir(global.Config.Zap.Director, os.ModePerm)
|
|
}
|
|
|
|
// 获取配置中的日志级别,并初始化对应的 zapcore.Core
|
|
levels := global.Config.Zap.Levels()
|
|
length := len(levels)
|
|
cores := make([]zapcore.Core, 0, length)
|
|
for i := 0; i < length; i++ {
|
|
core := internal.NewZapCore(levels[i])
|
|
cores = append(cores, core)
|
|
}
|
|
|
|
// 将所有的 zapcore.Core 合并为一个 zap.Logger
|
|
logger = zap.New(zapcore.NewTee(cores...))
|
|
|
|
// 如果配置中启用了显示行号,则添加调用者信息
|
|
if global.Config.Zap.ShowLine {
|
|
logger = logger.WithOptions(zap.AddCaller())
|
|
}
|
|
|
|
return logger
|
|
}
|