code: func extractCallerDetails() (file string, line int, pkg string, function string, err error) {
  	if pc, file, line, ok := runtime.Caller(2); ok {
  		fName := runtime.FuncForPC(pc).Name()
  
  		parts := strings.Split(fName, ".")
  		pl := len(parts)
  		pName := ""
  
  		if parts[pl-2][0] == '(' {
  			pName = strings.Join(parts[0:pl-2], ".")
  		} else {
  			pName = strings.Join(parts[0:pl-1], ".")
  		}
  
  		pName = strings.Replace(pName, defaultPackageName, "", -1)
  
  		return file, line, pName, fName, nil
  	}
  
  	return "", 0, "", "", errors.New("unable to extract the caller details")
  }
docs: // extractCallerDetails gets information about the file, line and function that
  // called a certain logging method such as Error, Info, Debug, Warn and Panic.