我想知道在记录错误时是否可以记录行/列号。 GAE日志记录库似乎只存储错误消息,但我认为像大多数日志记录库一样获取错误/日志点的确切位置是非常有价值的。
答案 0 :(得分:1)
你要求的绝对是可能的,你只需要非常明确!我在http://blog.golang.org/error-handling-and-go推荐了Andrew Gerrand的优秀文章,以获取有关该问题的一般信息,包括App Engine特有的注释。
该文章并未专门针对堆栈跟踪,但您当然可以通过http://golang.org/pkg/runtime/#Stack自行完成。
让我们诚实地承认,设计更多是系统编程语言而不是以应用程序为中心的语言 - 并不像那么那样对于你来说,更多隐式的,自动的手持,因为更多面向应用的语言,如其他App Engine - Java,Python,PHP ... [*]但是,Go 确实为您提供所有你需要做的工具就像你希望支持你自己的应用程序一样少,或多少,支持基础设施! - )
[*]嘿,你甚至不会像其他语言那样自动默认传播例外 - 不,你负责捕捉和交易你自己有错误,哦,恐怖......! - )
答案 1 :(得分:0)
您可以使用runtime包跟踪调用者(我认为这基本上就是您想要的)。没有GAE特定问题,它与错误处理无关。
// The depth specifies how many stack frames above
// lives the source line to be identified in the log message.
func traceCaller(depth int)(string, int){
_, file, line, ok := runtime.Caller(2 + depth)
if !ok {
file = "???"
line = 1
} else {
slash := strings.LastIndex(file, "/")
if slash >= 0 {
file = file[slash+1:]
}
}
return file, line
}