我設置了一個接受JSON格式POST消息的sinatra web服務。它會對傳入的數據執行各種驗證,如果有任何問題,它會調用halt 400, "You're doing it wrong"
或其他類似的內容,並詳細說明他們做錯了什麼。Sinatra的日誌暫停消息
錯誤消息(例如「你做錯了」)發送到客戶端就好了,但我還想讓他們登錄到服務器,以便我可以看到人們在哪裏遇到問題客戶端實現。有沒有簡單的方法來做到這一點?
我設置了一個接受JSON格式POST消息的sinatra web服務。它會對傳入的數據執行各種驗證,如果有任何問題,它會調用halt 400, "You're doing it wrong"
或其他類似的內容,並詳細說明他們做錯了什麼。Sinatra的日誌暫停消息
錯誤消息(例如「你做錯了」)發送到客戶端就好了,但我還想讓他們登錄到服務器,以便我可以看到人們在哪裏遇到問題客戶端實現。有沒有簡單的方法來做到這一點?
結賬logging和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
你可以用'caller'方法,而不是提高和營救例外獲得回溯。 –
謝謝謝苗。我已經更新了我們的實施。 – dslh