0

Heroku で Play Framework 1.4 アプリを実行しています。私の目標は、本番アプリケーションで Java 例外をすべてキャプチャし、それをStackdriver Error Reportingに報告して、例外の自動モニタリングと警告を行うことです。

4

1 に答える 1

0

Google Cloud Consoleで、必要に応じて新しいプロジェクトを作成し、Stackdriver Error Reporting API を有効にして API キーを取得します。

次に、単純な Stackdriver Error Reportingレポート API エンドポイントを使用して、HTTP POST リクエストと API キーを使用してエラー スタック トレースを送信します。

Play フレームワーク アプリケーションをインストルメント化して、すべての例外をキャッチし、予想される構造にフォーマットして、Stackdriver に POST します (少なくとも 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");
}

}

于 2016-11-24T13:35:11.060 に答える