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