diff --git a/src/main/java/it/inaf/oats/vospace/exception/InternalFaultException.java b/src/main/java/it/inaf/oats/vospace/exception/InternalFaultException.java
index 2429c070a061a09f10ea8eb712c1993847dcd1f8..635bf575bdbf5ec2d48c58fec7547346f9eebfa7 100644
--- a/src/main/java/it/inaf/oats/vospace/exception/InternalFaultException.java
+++ b/src/main/java/it/inaf/oats/vospace/exception/InternalFaultException.java
@@ -1,19 +1,25 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
 package it.inaf.oats.vospace.exception;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.ResponseStatus;
 
-
 @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)   // Status code 500
-public class InternalFaultException  extends VoSpaceException {
+public class InternalFaultException extends VoSpaceException {
+
+    private static final Logger LOG = LoggerFactory.getLogger(InternalFaultException.class);
 
     public InternalFaultException(String msg) {
         super("InternalFaultException: " + msg);
     }
-    
+
+    public InternalFaultException(Throwable cause) {
+        super("InternalFaultException: " + getMessage(cause));
+    }
+
+    private static String getMessage(Throwable cause) {
+        LOG.error("Exception caught", cause);
+        return cause.getMessage() != null ? cause.getMessage() : cause.getClass().getCanonicalName();
+    }
 }