30 lines
453 B
Go
30 lines
453 B
Go
package log
|
|
|
|
import (
|
|
"fmt"
|
|
"runtime"
|
|
)
|
|
|
|
func caller(depth int) string {
|
|
_, file, line, _ := runtime.Caller(depth)
|
|
short := file
|
|
for i := len(file) - 1; i > 0; i-- {
|
|
if file[i] == '/' {
|
|
short = file[i+1:]
|
|
break
|
|
}
|
|
}
|
|
return fmt.Sprintf("%s:%d", short, line)
|
|
}
|
|
|
|
func stack() string {
|
|
buf := make([]byte, 1024)
|
|
for {
|
|
n := runtime.Stack(buf, false)
|
|
if n < len(buf) {
|
|
return string(buf[:n])
|
|
}
|
|
buf = make([]byte, 2*len(buf))
|
|
}
|
|
}
|