回答

0

Google Cloud Console中,如果需要,创建一个新项目,然后enable the Stackdriver Error Reporting APIget 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"); 
} 

}

相关问题