From dd08147c263f7a1b813d474f23a970df73b299ec Mon Sep 17 00:00:00 2001 From: aceld Date: Wed, 8 May 2019 17:33:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3StdZinxLogger=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=89=93=E5=8D=B0=E6=97=A5=E5=BF=97=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=90=8D=E5=B1=82=E7=BA=A7=E4=B8=8D=E5=AF=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zlog/stdzlog.go | 5 +++++ zlog/zlogger.go | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/zlog/stdzlog.go b/zlog/stdzlog.go index 9f11b7e..34ff2ba 100644 --- a/zlog/stdzlog.go +++ b/zlog/stdzlog.go @@ -103,3 +103,8 @@ func Stack(v ...interface{}) { StdZinxLog.Stack(v...) } +func init() { + //因为StdZinxLog对象 对所有输出方法做了一层包裹,所以在打印调用函数的时候,比正常的logger对象多一层调用 + //一般的zinxLogger对象 calldDepth=2, StdZinxLog的calldDepth=3 + StdZinxLog.calldDepth = 3 +} diff --git a/zlog/zlogger.go b/zlog/zlogger.go index 89c8429..119241a 100644 --- a/zlog/zlogger.go +++ b/zlog/zlogger.go @@ -67,6 +67,8 @@ type ZinxLogger struct { file *os.File //是否打印调试debug信息 debugClose bool + //获取日志文件名和代码上述的runtime.Call 的函数调用层数 + calldDepth int } /* @@ -77,7 +79,8 @@ type ZinxLogger struct { */ func NewZinxLog(out io.Writer, prefix string, flag int) *ZinxLogger { - zlog := &ZinxLogger{out: out, prefix: prefix, flag: flag, file:nil, debugClose:false} + //默认 debug打开, calledDepth深度为2,ZinxLogger对象调用日志打印方法最多调用两层到达output函数 + zlog := &ZinxLogger{out: out, prefix: prefix, flag: flag, file:nil, debugClose:false, calldDepth:2} //设置log对象 回收资源 析构方法(不设置也可以,go的Gc会自动回收,强迫症没办法) runtime.SetFinalizer(zlog, CleanZinxLog) return zlog @@ -173,7 +176,7 @@ func (log *ZinxLogger) OutPut(level int, s string) error { log.mu.Unlock() var ok bool //得到当前调用者的文件名称和执行到的代码行数 - _, file, line, ok = runtime.Caller(2) + _, file, line, ok = runtime.Caller(log.calldDepth) if !ok { file = "unknown-file" line = 0