From ea37fb50815ee9cdcc69b757ebda0a7faec3663b Mon Sep 17 00:00:00 2001 From: boyce Date: Mon, 24 Jun 2024 15:29:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=97=A5=E5=BF=97=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3--SetSkip/GetSkip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- log/handler.go | 16 +++++++++++++++- log/log.go | 4 ++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/log/handler.go b/log/handler.go index ef6a215..b510003 100644 --- a/log/handler.go +++ b/log/handler.go @@ -10,16 +10,20 @@ import ( "sync" ) +const defaultSkip = 7 type IOriginHandler interface { slog.Handler Lock() UnLock() + SetSkip(skip int) + GetSkip() int } type BaseHandler struct { addSource bool w io.Writer locker sync.Mutex + skip int } type OriginTextHandler struct { @@ -32,6 +36,14 @@ type OriginJsonHandler struct { *slog.JSONHandler } +func (bh *BaseHandler) SetSkip(skip int){ + bh.skip = skip +} + +func (bh *BaseHandler) GetSkip() int{ + return bh.skip +} + func getStrLevel(level slog.Level) string{ switch level { case LevelTrace: @@ -78,6 +90,7 @@ func NewOriginTextHandler(level slog.Level,w io.Writer,addSource bool,replaceAtt ReplaceAttr: replaceAttr, }) + textHandler.skip = defaultSkip return &textHandler } @@ -124,6 +137,7 @@ func NewOriginJsonHandler(level slog.Level,w io.Writer,addSource bool,replaceAtt ReplaceAttr: replaceAttr, }) + jsonHandler.skip = defaultSkip return &jsonHandler } @@ -141,7 +155,7 @@ func (oh *OriginJsonHandler) Handle(context context.Context, record slog.Record) func (b *BaseHandler) Fill(context context.Context, record *slog.Record) { if b.addSource { var pcs [1]uintptr - runtime.Callers(7, pcs[:]) + runtime.Callers(b.skip, pcs[:]) record.PC = pcs[0] } } diff --git a/log/log.go b/log/log.go index 7f1fd95..6fae961 100644 --- a/log/log.go +++ b/log/log.go @@ -239,6 +239,10 @@ func (iw *IoWriter) swichFile() error{ return nil } +func GetDefaultHandler() IOriginHandler{ + return gLogger.(*Logger).Slogger.Handler().(IOriginHandler) +} + func NewTextLogger(level slog.Level,pathName string,filePrefix string,addSource bool,logChannelCap int) (ILogger,error){ var logger Logger logger.ioWriter.filePath = pathName