0

Я запускаю приложение Play Framework 1.4 на Heroku. Моя цель - захватить любое исключение Java в моем производственном приложении и сообщить об этом Stackdriver Error Reporting для автоматического контроля и предупреждения об исключениях.Как настроить отчет об ошибках Stackdriver на платформе воспроизведения 1.4

ответ

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"); 
} 

}