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