Heroku で Play Framework 1.4 アプリを実行しています。私の目標は、本番アプリケーションで Java 例外をすべてキャプチャし、それをStackdriver Error Reportingに報告して、例外の自動モニタリングと警告を行うことです。
質問する
161 次
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 に答える