2012-05-31 70 views
2

我設置了一個接受JSON格式POST消息的sinatra web服務。它會對傳入的數據執行各種驗證,如果有任何問題,它會調用halt 400, "You're doing it wrong"或其他類似的內容,並詳細說明他們做錯了什麼。Sinatra的日誌暫停消息

錯誤消息(例如「你做錯了」)發送到客戶端就好了,但我還想讓他們登錄到服務器,以便我可以看到人們在哪裏遇到問題客戶端實現。有沒有簡單的方法來做到這一點?

回答

4

結賬loggingException#backtrace。您可能需要執行類似raise RuntimeError(或其他一些錯誤),然後捕獲錯誤並將error.backtrace的結果發送到您的日誌。

2

感謝Carl Zulauf指引我朝着正確的方向前進。最後,我代替我所有的halt 400, "message"電話與調用此方法:

def invalid_request! message 
    logger.info "Request rejected: #{message}\n#{caller(1).join "\n"}" 
    halt 400, message 
end 
+2

你可以用'caller'方法,而不是提高和營救例外獲得回溯。 –

+0

謝謝謝苗。我已經更新了我們的實施。 – dslh