0
我在Heroku上運行Play Framework 1.4應用程序。 我的目標是捕獲我的生產應用程序中的任何Java異常,並將其報告給Stackdriver Error Reporting以進行自動異常監視和警報。如何在Play Framework 1.4上設置Stackdriver錯誤報告
我在Heroku上運行Play Framework 1.4應用程序。 我的目標是捕獲我的生產應用程序中的任何Java異常,並將其報告給Stackdriver Error Reporting以進行自動異常監視和警報。如何在Play Framework 1.4上設置Stackdriver錯誤報告
在Google Cloud Console中,如果需要,創建一個新項目,然後enable the Stackdriver Error Reporting API和get an API key。
然後,我們的目標是使用簡單的Stackdriver錯誤報告report API endpoint:使用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");
}
}