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