log4j用多了,最近在用go写东东,log package又封装的很简陋
随即打算山寨个log4go
大体架构好说(- -!山寨嘛,哈哈)
就是不太清楚怎么获取调用log.Debug的函数名和代码所在的行数
研究了一下,直接贴代码吧,呵呵
package main import "runtime" import "log" func main() { test() } func test() { test2() } func test2(){ pc,file,line,ok := runtime.Caller(2) log.Println(pc) log.Println(file) log.Println(line) log.Println(ok) f := runtime.FuncForPC(pc) log.Println(f.Name()) pc,file,line,ok = runtime.Caller(0) log.Println(pc) log.Println(file) log.Println(line) log.Println(ok) f = runtime.FuncForPC(pc) log.Println(f.Name()) pc,file,line,ok = runtime.Caller(1) log.Println(pc) log.Println(file) log.Println(line) log.Println(ok) f = runtime.FuncForPC(pc) log.Println(f.Name()) }
output:
2011/12/30 22:55:17 8216
2011/12/30 22:55:17 /Users/jarcher/workspace/go/test/src/linetest.go
2011/12/30 22:55:17 7
2011/12/30 22:55:17 true
2011/12/30 22:55:17 main.main
2011/12/30 22:55:17 9065
2011/12/30 22:55:17 /Users/jarcher/workspace/go/test/src/linetest.go
2011/12/30 22:55:17 23
2011/12/30 22:55:17 true
2011/12/30 22:55:17 main.test2
2011/12/30 22:55:17 8241
2011/12/30 22:55:17 /Users/jarcher/workspace/go/test/src/linetest.go
2011/12/30 22:55:17 11
2011/12/30 22:55:17 true
2011/12/30 22:55:17 main.test