簡體   English   中英

如何在Play Framework 1.4上設置Stackdriver Error Reporting

[英]How to setup Stackdriver Error Reporting on Play Framework 1.4

我在Heroku上運行Play Framework 1.4應用程序。 我的目標是捕獲生產應用程序中的任何Java異常,並將其報告給Stackdriver Error Reporting,以進行自動異常監視和警報。

Google Cloud Console中 ,根據需要創建一個新項目,然后啟用S​​tackdriver Error Reporting API獲取API密鑰

然后的目標是使用簡單的Stackdriver Error Reporting 報告API端點 :使用HTTP POST請求和API密鑰發送錯誤堆棧跟蹤。

對Play Framework應用程序進行檢測,以捕獲所有異常,將其格式化為所需的結構,然后將其發布到Stackdriver(確保您至少使用JDK v1.7)。

這是您需要添加到應用程序控制器的代碼:

public class Application extends Controller {

@Catch(value={Exception.class})
public static void onException(Exception ex) {
    StringWriter exceptionWriter = new StringWriter();
    ex.printStackTrace(new PrintWriter(exceptionWriter));

    Map<String, Object> payload = new HashMap<String, Object>();
    payload.put("message", exceptionWriter.toString());
    Map<String,String> serviceContextData = new HashMap<String, String>();
    serviceContextData.put("service", "randomgift");
    payload.put("serviceContext", serviceContextData);
    Gson gson = new Gson();
    String payloadStr = gson.toJson(payload); 

    Map<String, String> headers = new HashMap<String,String>();
    headers.put("Content-Type", "application/json");

    // Report to Stackdriver Error Reporting:
    String apikey = "<your-api-key>";
    String projectName = "<your-project-id>";
    WS.url("https://clouderrorreporting.googleapis.com/v1beta1/projects/" + projectName + "/events:report?key=" + apikey)
      .headers(headers)
      .body(payloadStr)
      .post();

    Logger.info("Error reported");
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM