- update log

master
李光春 8 months ago
parent 0bf72b945e
commit 37af6411fd

@ -12,28 +12,29 @@ import (
"github.com/dtapps/go-library/utils/gourl" "github.com/dtapps/go-library/utils/gourl"
"gopkg.in/natefinch/lumberjack.v2" "gopkg.in/natefinch/lumberjack.v2"
"log/slog" "log/slog"
"os"
"runtime" "runtime"
) )
type ApiSLogFun func() *ApiSLog type ApiSLogFun func() *ApiSLog
type ApiSLogConfig struct { type ApiSLogConfig struct {
LogPath string // 日志文件路径 LogPath string // 日志文件路径
LogName string // 日志文件名 LogName string // 日志文件名
MaxSize int // 单位为MB,默认为512MB MaxSize int // 单位为MB,默认为512MB
MaxBackups int // 保留旧文件的最大个数 MaxBackups int // 保留旧文件的最大个数
MaxAge int // 文件最多保存多少天 0=不删除 MaxAge int // 文件最多保存多少天 0=不删除
LocalTime bool // 采用本地时间 LocalTime bool // 采用本地时间
Compress bool // 是否压缩日志 Compress bool // 是否压缩日志
ShowLine bool // 显示代码行 ShowLine bool // 显示代码行
LogSaveFile bool // 是否保存到文件
} }
type ApiSLog struct { type ApiSLog struct {
config *ApiSLogConfig config *ApiSLogConfig
lumberjackLogger lumberjack.Logger jsonHandler *slog.JSONHandler
jsonHandler *slog.JSONHandler logger *slog.Logger
logger *slog.Logger systemConfig struct {
systemConfig struct {
systemHostname string // 主机名 systemHostname string // 主机名
systemOs string // 系统类型 systemOs string // 系统类型
systemKernel string // 系统内核 systemKernel string // 系统内核
@ -48,15 +49,6 @@ func NewApiSlog(ctx context.Context, config *ApiSLogConfig) *ApiSLog {
sl := &ApiSLog{config: config} sl := &ApiSLog{config: config}
sl.lumberjackLogger = lumberjack.Logger{
Filename: sl.config.LogPath + sl.config.LogName, // ⽇志⽂件路径
MaxSize: sl.config.MaxSize, // 单位为MB,默认为512MB
MaxAge: sl.config.MaxAge, // 文件最多保存多少天
MaxBackups: sl.config.MaxBackups, // 保留旧文件的最大个数
LocalTime: sl.config.LocalTime, // 采用本地时间
Compress: sl.config.Compress, // 是否压缩日志
}
opts := slog.HandlerOptions{ opts := slog.HandlerOptions{
AddSource: sl.config.ShowLine, AddSource: sl.config.ShowLine,
Level: slog.LevelDebug, Level: slog.LevelDebug,
@ -69,9 +61,22 @@ func NewApiSlog(ctx context.Context, config *ApiSLogConfig) *ApiSLog {
}, },
} }
sl.jsonHandler = slog.NewJSONHandler(&sl.lumberjackLogger, &opts) // 是否保存到文件
if sl.config.LogSaveFile {
sl.logger = slog.New(sl.jsonHandler) lumberjackLogger := lumberjack.Logger{
Filename: sl.config.LogPath + sl.config.LogName, // ⽇志⽂件路径
MaxSize: sl.config.MaxSize, // 单位为MB,默认为512MB
MaxAge: sl.config.MaxAge, // 文件最多保存多少天
MaxBackups: sl.config.MaxBackups, // 保留旧文件的最大个数
LocalTime: sl.config.LocalTime, // 采用本地时间
Compress: sl.config.Compress, // 是否压缩日志
}
sl.jsonHandler = slog.NewJSONHandler(&lumberjackLogger, &opts)
sl.logger = slog.New(sl.jsonHandler)
} else {
sl.jsonHandler = slog.NewJSONHandler(os.Stdout, &opts)
sl.logger = slog.New(sl.jsonHandler)
}
sl.setConfig(ctx) sl.setConfig(ctx)
@ -174,4 +179,5 @@ func (sl *ApiSLog) setConfig(ctx context.Context) {
sl.systemConfig.sdkVersion = go_library.Version() sl.systemConfig.sdkVersion = go_library.Version()
sl.systemConfig.goVersion = runtime.Version() sl.systemConfig.goVersion = runtime.Version()
} }

@ -7,6 +7,15 @@ import (
"runtime" "runtime"
) )
// ConfigSLogClientFun 日志配置
func (c *GinCustomClient) ConfigSLogClientFun(sLogFun SLogFun) {
sLog := sLogFun()
if sLog != nil {
c.slog.client = sLog
c.slog.status = true
}
}
func (c *GinCustomClient) setConfig(ctx context.Context) { func (c *GinCustomClient) setConfig(ctx context.Context) {
info := getSystem() info := getSystem()

@ -23,30 +23,21 @@ type SLogConfig struct {
Compress bool // 是否压缩日志 Compress bool // 是否压缩日志
JsonFormat bool // 是否输出为json格式 JsonFormat bool // 是否输出为json格式
ShowLine bool // 显示代码行 ShowLine bool // 显示代码行
LogSaveFile bool // 是否保存到文件
LogInConsole bool // 是否同时输出到控制台 LogInConsole bool // 是否同时输出到控制台
} }
type SLog struct { type SLog struct {
config *SLogConfig config *SLogConfig
lumberjackLogger lumberjack.Logger jsonHandler *slog.JSONHandler
jsonHandler *slog.JSONHandler textHandler *slog.TextHandler
textHandler *slog.TextHandler logger *slog.Logger
logger *slog.Logger
} }
func NewSlog(ctx context.Context, config *SLogConfig) *SLog { func NewSlog(ctx context.Context, config *SLogConfig) *SLog {
sl := &SLog{config: config} sl := &SLog{config: config}
sl.lumberjackLogger = lumberjack.Logger{
Filename: sl.config.LogPath + sl.config.LogName, // ⽇志⽂件路径
MaxSize: sl.config.MaxSize, // 单位为MB,默认为512MB
MaxAge: sl.config.MaxAge, // 文件最多保存多少天
MaxBackups: sl.config.MaxBackups, // 保留旧文件的最大个数
LocalTime: sl.config.LocalTime, // 采用本地时间
Compress: sl.config.Compress, // 是否压缩日志
}
opts := slog.HandlerOptions{ opts := slog.HandlerOptions{
AddSource: sl.config.ShowLine, AddSource: sl.config.ShowLine,
Level: slog.LevelDebug, Level: slog.LevelDebug,
@ -59,21 +50,43 @@ func NewSlog(ctx context.Context, config *SLogConfig) *SLog {
}, },
} }
// 判断是否json格式输出 // 是否保存到文件
if sl.config.JsonFormat { if sl.config.LogSaveFile {
if sl.config.LogInConsole {
sl.jsonHandler = slog.NewJSONHandler(io.MultiWriter(os.Stdout, &sl.lumberjackLogger), &opts) lumberjackLogger := lumberjack.Logger{
Filename: sl.config.LogPath + sl.config.LogName, // ⽇志⽂件路径
MaxSize: sl.config.MaxSize, // 单位为MB,默认为512MB
MaxAge: sl.config.MaxAge, // 文件最多保存多少天
MaxBackups: sl.config.MaxBackups, // 保留旧文件的最大个数
LocalTime: sl.config.LocalTime, // 采用本地时间
Compress: sl.config.Compress, // 是否压缩日志
}
// 是否json格式输出
if sl.config.JsonFormat {
if sl.config.LogInConsole {
sl.jsonHandler = slog.NewJSONHandler(io.MultiWriter(os.Stdout, &lumberjackLogger), &opts)
} else {
sl.jsonHandler = slog.NewJSONHandler(&lumberjackLogger, &opts)
}
sl.logger = slog.New(sl.jsonHandler)
} else { } else {
sl.jsonHandler = slog.NewJSONHandler(&sl.lumberjackLogger, &opts) if sl.config.LogInConsole {
sl.textHandler = slog.NewTextHandler(io.MultiWriter(os.Stdout, &lumberjackLogger), &opts)
} else {
sl.textHandler = slog.NewTextHandler(&lumberjackLogger, &opts)
}
sl.logger = slog.New(sl.textHandler)
} }
sl.logger = slog.New(sl.jsonHandler)
} else { } else {
if sl.config.LogInConsole { // 是否json格式输出
sl.textHandler = slog.NewTextHandler(io.MultiWriter(os.Stdout, &sl.lumberjackLogger), &opts) if sl.config.JsonFormat {
sl.jsonHandler = slog.NewJSONHandler(os.Stdout, &opts)
sl.logger = slog.New(sl.jsonHandler)
} else { } else {
sl.textHandler = slog.NewTextHandler(&sl.lumberjackLogger, &opts) sl.textHandler = slog.NewTextHandler(os.Stdout, &opts)
sl.logger = slog.New(sl.textHandler)
} }
sl.logger = slog.New(sl.textHandler)
} }
return sl return sl

Loading…
Cancel
Save