logging: print file:line:funcName of the caller of errorIf and fatalIf (#3035)

This commit is contained in:
Krishna Srinivas 2016-10-22 14:54:34 +05:30 committed by Harshavardhana
parent 83b364891d
commit f2b0c08e34
1 changed files with 18 additions and 2 deletions

View File

@ -77,13 +77,27 @@ func stackInfo() string {
return strings.Replace(stackBuf.String(), filepath.ToSlash(GOPATH)+"/src/", "", -1)
}
// Get file, line, function name of the caller.
func callerLocation() string {
pc, file, line, success := runtime.Caller(2)
if !success {
file = "<unknown>"
line = 0
}
shortFile := true // We are only interested in short file form.
callerLoc := funcFromPC(pc, file, line, shortFile)
return callerLoc
}
// errorIf synonymous with fatalIf but doesn't exit on error != nil
func errorIf(err error, msg string, data ...interface{}) {
if err == nil {
return
}
location := callerLocation()
fields := logrus.Fields{
"cause": err.Error(),
"location": location,
"cause": err.Error(),
}
if e, ok := err.(*Error); ok {
fields["stack"] = strings.Join(e.Trace(), " ")
@ -97,8 +111,10 @@ func fatalIf(err error, msg string, data ...interface{}) {
if err == nil {
return
}
location := callerLocation()
fields := logrus.Fields{
"cause": err.Error(),
"location": location,
"cause": err.Error(),
}
if globalTrace {
fields["stack"] = "\n" + stackInfo()