diff --git a/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java b/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java
index cd58377..a10a9db 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java
@@ -35,10 +35,8 @@ public class ContextBase implements Context {
 
   Object configurationLock = new Object();
 
-  // 0 idle threads, 2 maximum threads, no idle waiting
-  ExecutorService executorService = new ThreadPoolExecutor(0, 2,
-          0L, TimeUnit.MILLISECONDS,
-          new LinkedBlockingQueue<Runnable>());
+  // lazily initialized in getExecutorService()
+  ExecutorService executorService;
 
   public StatusManager getStatusManager() {
     return sm;
@@ -132,6 +130,14 @@ public class ContextBase implements Context {
   }
 
   public ExecutorService getExecutorService() {
+    // NOTE this is not threadsafe, but the rest of this class is not threadsafe either.
+    if (executorService == null) {
+        // 0 idle threads, 2 maximum threads, no idle waiting
+        executorService = new ThreadPoolExecutor(0, 2,
+            0L, TimeUnit.MILLISECONDS,
+            new LinkedBlockingQueue<Runnable>());
+    }
+      
     return  executorService;
   }
