Juan Hernandez has uploaded a new change for review.

Change subject: restapi: Improve logging of exceptions
......................................................................

restapi: Improve logging of exceptions

Currently when an exception is detected while rendering an document the
details are swallowed by the REST framework and lost. This complicates
debugging. To avoid that this patch changes the exception handler so
that it will send the details of the exception to the log.

Change-Id: I8085ae6d09ab49f1706b6c38d5b3e79b712f0241
Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/IOExceptionMapper.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/JsonExceptionMapper.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MappingExceptionMapper.java
4 files changed, 52 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/37550/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/IOExceptionMapper.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/IOExceptionMapper.java
index d282864..f3a8b60 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/IOExceptionMapper.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/IOExceptionMapper.java
@@ -30,12 +30,15 @@
 import org.ovirt.engine.api.model.Fault;
 import org.ovirt.engine.api.model.UsageMessage;
 import org.ovirt.engine.api.utils.InvalidValueException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This mapper is intended to handle the exceptions thrown by the JAXB message 
body reader.
  */
 @Provider
 public class IOExceptionMapper implements ExceptionMapper<IOException> {
+    private static final Logger log = 
LoggerFactory.getLogger(IOExceptionMapper.class);
 
     @Context
     protected UriInfo uriInfo;
@@ -58,6 +61,12 @@
         // For any other kind of exception generate an error response with 
information describing the correct syntax for
         // the request:
         try {
+            log.error(
+                "IO exception while processing \"{}\" request for path \"{}\"",
+                request.getMethod(),
+                uriInfo.getPath()
+            );
+            log.error("Exception", exception);
             UsageFinder finder = new UsageFinder();
             UsageMessage usage = finder.getUsageMessage(application, uriInfo, 
request);
             return Response.status(Status.BAD_REQUEST).entity(usage).build();
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/JsonExceptionMapper.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/JsonExceptionMapper.java
index a226e63..4195a74 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/JsonExceptionMapper.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/JsonExceptionMapper.java
@@ -27,20 +27,31 @@
 import javax.ws.rs.ext.Provider;
 
 import org.codehaus.jackson.JsonProcessingException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Provider
 public class JsonExceptionMapper implements 
ExceptionMapper<JsonProcessingException> {
+    private static final Logger log = 
LoggerFactory.getLogger(JsonExceptionMapper.class);
 
     @Context
     protected UriInfo uriInfo;
+
     @Context
     protected Request request;
+
     @Context
     protected Application application;
 
     @Override
     public Response toResponse(JsonProcessingException exception) {
         try {
+            log.error(
+                "JSON exception while processing \"{}\" request for path 
\"{}\"",
+                request.getMethod(),
+                uriInfo.getPath()
+            );
+            log.error("Exception", exception);
             return Response.status(Status.BAD_REQUEST)
                     .entity(new UsageFinder().getUsageMessage(application, 
uriInfo, request))
                     .build();
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java
index 780fc2b..3e63ce9 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java
@@ -16,18 +16,36 @@
 
 package org.ovirt.engine.api.restapi.resource.validation;
 
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Request;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriInfo;
 import javax.ws.rs.ext.ExceptionMapper;
 import javax.ws.rs.ext.Provider;
 
 import org.ovirt.engine.api.restapi.utils.MalformedIdException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Provider
 public class MalformedIdExceptionMapper implements 
ExceptionMapper<MalformedIdException> {
+    private static final Logger log = 
LoggerFactory.getLogger(MalformedIdExceptionMapper.class);
+
+    @Context
+    protected UriInfo uriInfo;
+
+    @Context
+    protected Request request;
 
     @Override
     public Response toResponse(MalformedIdException exception) {
+        log.error(
+            "Malformed id detected while processing \"{}\" request for \"{}\"",
+            request.getMethod(),
+            uriInfo.getPath()
+        );
+        log.error("Exception", exception);
         return 
Response.status(Status.BAD_REQUEST).entity(exception.getCause().getMessage()).build();
     }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MappingExceptionMapper.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MappingExceptionMapper.java
index 10b600e..762ce4c 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MappingExceptionMapper.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MappingExceptionMapper.java
@@ -16,7 +16,10 @@
 
 package org.ovirt.engine.api.restapi.resource.validation;
 
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Request;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
 import javax.ws.rs.ext.ExceptionMapper;
 import javax.ws.rs.ext.Provider;
 
@@ -27,11 +30,21 @@
 
 @Provider
 public class MappingExceptionMapper implements 
ExceptionMapper<MappingException> {
-
     private static final Logger log = 
LoggerFactory.getLogger(MappingExceptionMapper.class);
+
+    @Context
+    protected UriInfo uriInfo;
+
+    @Context
+    protected Request request;
 
     @Override
     public Response toResponse(MappingException exception) {
+        log.error(
+            "Mapping exception while processing \"{}\" request for path 
\"{}\"",
+            request.getMethod(),
+            uriInfo.getPath()
+        );
         log.error("Exception", exception);
 
         final Fault fault = new Fault();


-- 
To view, visit http://gerrit.ovirt.org/37550
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8085ae6d09ab49f1706b6c38d5b3e79b712f0241
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to