Skip to content

Commit

Permalink
use runtime caller1
Browse files Browse the repository at this point in the history
  • Loading branch information
phuslu committed Apr 23, 2024
1 parent ee0c230 commit 94168fe
Showing 1 changed file with 49 additions and 44 deletions.
93 changes: 49 additions & 44 deletions logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ func Trace() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -134,8 +134,8 @@ func Debug() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -150,8 +150,8 @@ func Info() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -166,8 +166,8 @@ func Warn() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -182,8 +182,8 @@ func Error() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -198,8 +198,8 @@ func Fatal() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -214,8 +214,8 @@ func Panic() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -227,8 +227,8 @@ func Printf(format string, v ...interface{}) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
e.Msgf(format, v...)
}
Expand All @@ -243,8 +243,8 @@ func (l *Logger) Trace() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -259,8 +259,8 @@ func (l *Logger) Debug() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -275,8 +275,8 @@ func (l *Logger) Info() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -291,8 +291,8 @@ func (l *Logger) Warn() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -307,8 +307,8 @@ func (l *Logger) Error() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -323,8 +323,8 @@ func (l *Logger) Fatal() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -339,8 +339,8 @@ func (l *Logger) Panic() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -352,8 +352,8 @@ func (l *Logger) Log() (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -368,8 +368,8 @@ func (l *Logger) WithLevel(level Level) (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -394,8 +394,8 @@ func (l *Logger) Err(err error) (e *Entry) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
return
}
Expand All @@ -413,8 +413,8 @@ func (l *Logger) Printf(format string, v ...interface{}) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller, &pc, 1, 1), pc, full)
}
}
e.Msgf(format, v...)
Expand Down Expand Up @@ -1627,11 +1627,11 @@ func (e *Entry) Type(key string, v interface{}) *Entry {
func (e *Entry) Caller(depth int) *Entry {
if e != nil {
var full bool
var rpc [1]uintptr
var pc uintptr
if depth < 0 {
depth, full = -depth, true
}
e.caller(callers(depth, rpc[:]), rpc[:], full)
e.caller(caller1(depth, &pc, 1, 1), pc, full)
}
return e
}
Expand Down Expand Up @@ -1737,11 +1737,12 @@ func (e *Entry) Msgs(args ...interface{}) {
e.Msg("")
}

func (e *Entry) caller(n int, rpc []uintptr, fullpath bool) {
func (e *Entry) caller(n int, pc uintptr, fullpath bool) {
if n < 1 {
return
}
frame, _ := runtime.CallersFrames(rpc).Next()
rpc := [1]uintptr{pc}
frame, _ := runtime.CallersFrames(rpc[:]).Next()
file := frame.File
if !fullpath {
var i int
Expand Down Expand Up @@ -2138,8 +2139,8 @@ func (w *stdLogWriter) Write(p []byte) (int, error) {
if caller < 0 {
caller, full = -caller, true
}
var rpc [1]uintptr
e.caller(callers(caller+2, rpc[:]), rpc[:], full)
var pc uintptr
e.caller(caller1(caller+2, &pc, 1, 1), pc, full)
}
e.Msg(b2s(p))
return len(p), nil
Expand Down Expand Up @@ -2209,3 +2210,7 @@ func absClock(abs uint64) (hour, min, sec int)
//go:noescape
//go:linkname callers runtime.callers
func callers(skip int, pcbuf []uintptr) int

//go:noescape
//go:linkname caller1 runtime.callers
func caller1(skip int, pc *uintptr, len, cap int) int //nolint:predeclared

0 comments on commit 94168fe

Please sign in to comment.