diff --git a/common/source/java/ch/systemsx/cisd/common/servlet/GWTRPCServiceExporter.java b/common/source/java/ch/systemsx/cisd/common/servlet/GWTRPCServiceExporter.java
index 73e66ee791b274f3e93715dad3da8575d3d963a2..286ef1a150de0fd8ecc63ce45b4af4815a836e13 100644
--- a/common/source/java/ch/systemsx/cisd/common/servlet/GWTRPCServiceExporter.java
+++ b/common/source/java/ch/systemsx/cisd/common/servlet/GWTRPCServiceExporter.java
@@ -22,6 +22,7 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.BeanNameAware;
 import org.springframework.beans.factory.DisposableBean;
@@ -56,6 +57,8 @@ import ch.systemsx.cisd.common.utilities.MethodUtils;
 public abstract class GWTRPCServiceExporter extends RemoteServiceServlet implements
         InitializingBean, ServletConfigAware, DisposableBean, BeanNameAware, Controller
 {
+    private static final String SESSION_EXP_MSG = "Session expired. Please login again.";
+
     private static final long serialVersionUID = 1L;
 
     private static final Logger operationLog =
@@ -142,12 +145,13 @@ public abstract class GWTRPCServiceExporter extends RemoteServiceServlet impleme
         final String methodDescription =
                 String.format("Invoking method '%s' failed.", targetMethod == null ? "<unknown>"
                         : MethodUtils.describeMethod(targetMethod));
+        final Level level = SESSION_EXP_MSG.equals(cause.getMessage()) ? Level.WARN : Level.ERROR;
         if (cause instanceof IOptionalStackTraceLoggingException)
         {
-            operationLog.error(methodDescription + ": " + cause.getMessage());
+            operationLog.log(level, methodDescription + ": " + cause.getMessage());
         } else
         {
-            operationLog.error(methodDescription, cause);
+            operationLog.log(level, methodDescription, cause);
         }
     }