diff --git a/common/source/java/ch/systemsx/cisd/common/api/retry/RetryCaller.java b/common/source/java/ch/systemsx/cisd/common/api/retry/RetryCaller.java
index 47f04ff6f70734092f84cd502e1d983547dfdd76..70fab4f58cb9c7fe3005a1d4a8eb4f376fa6acf2 100644
--- a/common/source/java/ch/systemsx/cisd/common/api/retry/RetryCaller.java
+++ b/common/source/java/ch/systemsx/cisd/common/api/retry/RetryCaller.java
@@ -24,18 +24,22 @@ import org.springframework.remoting.RemoteConnectFailureException;
 
 import ch.systemsx.cisd.common.api.retry.config.DefaultRetryConfiguration;
 import ch.systemsx.cisd.common.api.retry.config.RetryConfiguration;
+import ch.systemsx.cisd.common.logging.ConsoleLogger;
+import ch.systemsx.cisd.common.logging.ISimpleLogger;
+import ch.systemsx.cisd.common.logging.LogLevel;
 
 /**
  * @author pkupczyk
  */
 public abstract class RetryCaller<T, E extends Throwable>
 {
-
-    private RetryConfiguration configuration;
+    private final RetryConfiguration configuration;
 
     private int retryCounter;
 
     private int waitingTime;
+    
+    private final ISimpleLogger logger;
 
     public RetryCaller()
     {
@@ -43,6 +47,11 @@ public abstract class RetryCaller<T, E extends Throwable>
     }
 
     public RetryCaller(RetryConfiguration configuration)
+    {
+        this(configuration, new ConsoleLogger(System.err));
+    }
+    
+    public RetryCaller(RetryConfiguration configuration, ISimpleLogger logger)
     {
         if (configuration == null)
         {
@@ -64,6 +73,7 @@ public abstract class RetryCaller<T, E extends Throwable>
 
         this.configuration = configuration;
         this.waitingTime = configuration.getWaitingTimeBetweenRetries();
+        this.logger = logger;
     }
 
     protected abstract T call() throws E;
@@ -82,11 +92,11 @@ public abstract class RetryCaller<T, E extends Throwable>
                 {
                     if (shouldRetry())
                     {
-                        System.err.println("Communication failed - will retry");
+                        logger.log(LogLevel.WARN, "Communication failed - will retry");
                         waitForRetry();
                     } else
                     {
-                        System.err.println("Communication failed - will NOT retry");
+                        logger.log(LogLevel.WARN, "Communication failed - will NOT retry");
                         throw e;
                     }
                 } else