code: func ResponseLogAndError(v interface{}) {
  	if e, ok := v.(*logrus.Entry); ok {
  		e.Error(e.Message)
  		oldFormatter := e.Logger.Formatter
  		logrus.SetFormatter(&logrus.JSONFormatter{})
  		s, err := e.String()
  		logrus.SetFormatter(oldFormatter)
  		if err != nil {
  			ResponseError(err.Error())
  			return
  		}
  		// Cosmetic since " would be escaped
  		ResponseError(strings.Replace(s, "\"", "'", -1))
  	} else {
  		e, isErr := v.(error)
  		_, isRuntimeErr := e.(runtime.Error)
  		if isErr && !isRuntimeErr {
  			logrus.Errorf(fmt.Sprint(e))
  			ResponseError(fmt.Sprint(e))
  		} else {
  			logrus.Errorf("Caught FATAL error: %s", v)
  			debug.PrintStack()
  			ResponseError("Caught FATAL error: %s", v)
  		}
  	}
  }
docs: // ResponseLogAndError would log the error before call ResponseError()