我已经建立了一个接受 JSON 格式的 POST 消息的 sinatra Web 服务。它对传入的数据执行各种验证,如果有任何它调用的问题halt 400, "You're doing it wrong"
或类似的东西,更详细地说明他们做错了什么。
错误消息(例如“你做错了”)可以很好地发送到客户端,但我也想让它们登录到服务器上,这样我就可以看到人们在哪里遇到了客户端实现的问题。有没有简单的方法可以做到这一点?
检查日志记录和Exception#backtrace
. 您可能需要执行类似raise RuntimeError
(或其他错误)的操作,然后捕获错误并将结果发送error.backtrace
到您的日志。
感谢 Carl Zulauf 为我指明了正确的方向。最后,我halt 400, "message"
用对这个方法的调用替换了我所有的调用:
def invalid_request! message
logger.info "Request rejected: #{message}\n#{caller(1).join "\n"}"
halt 400, message
end