Я запускаю приложение Play Framework 1.4 на Heroku. Моя цель - захватить любое исключение Java в моем производственном приложении и сообщить об этом Stackdriver Error Reporting для автоматического контроля и предупреждения об исключениях.Как настроить отчет об ошибках Stackdriver на платформе воспроизведения 1.4
0
A
ответ
0
В 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");
}
}