diff --git a/Network/Wai/Middleware/RequestLogger.hs b/Network/Wai/Middleware/RequestLogger.hs
--- a/Network/Wai/Middleware/RequestLogger.hs
+++ b/Network/Wai/Middleware/RequestLogger.hs
@@ -1,6 +1,8 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE CPP #-}
+
+-- NOTE: Due to https://github.com/yesodweb/wai/issues/192, this module should
+-- not use CPP.
 module Network.Wai.Middleware.RequestLogger
     ( -- * Basic stdout logging
       logStdout
@@ -39,11 +41,7 @@
 
 import Data.Default (Default (def))
 import Network.Wai.Logger.Format (apacheFormat, IPAddrSource (..))
-#if MIN_VERSION_fast_logger(0,3,0)
-import System.Date.Cache (ondemandDateCacher)
-#else
-import System.Log.FastLogger.Date (getDate, dateInit, ZonedDate)
-#endif
+import Network.Wai.Middleware.RequestLogger.Internal
 
 data OutputFormat = Apache IPAddrSource
                   | Detailed Bool -- ^ use colors?
@@ -96,13 +94,7 @@
     dateHelper mgetdate = do
         case mgetdate of
             Just x -> return x
-#if MIN_VERSION_fast_logger(0, 3, 0)
-            Nothing -> do
-                (getter,_) <- ondemandDateCacher zonedDateCacheConf
-                return getter
-#else
-            Nothing -> fmap getDate dateInit
-#endif
+            Nothing -> getDateGetter
 
 apacheMiddleware :: Callback -> IPAddrSource -> IO ZonedDate -> Middleware
 apacheMiddleware cb ipsrc getdate = customMiddleware cb getdate $ apacheFormat ipsrc
diff --git a/Network/Wai/Middleware/RequestLogger/Internal.hs b/Network/Wai/Middleware/RequestLogger/Internal.hs
new file mode 100644
--- /dev/null
+++ b/Network/Wai/Middleware/RequestLogger/Internal.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE CPP #-}
+-- | A module for containing some CPPed code, due to:
+--
+-- https://github.com/yesodweb/wai/issues/192
+module Network.Wai.Middleware.RequestLogger.Internal where
+
+import Data.ByteString (ByteString)
+import System.Log.FastLogger
+#if MIN_VERSION_fast_logger(0,3,0)
+import System.Date.Cache (ondemandDateCacher)
+#else
+import System.Log.FastLogger.Date (getDate, dateInit, ZonedDate)
+#endif
+
+getDateGetter :: IO (IO ByteString)
+#if MIN_VERSION_fast_logger(0, 3, 0)
+getDateGetter = fmap fst $ ondemandDateCacher zonedDateCacheConf
+#else
+getDateGetter = fmap getDate dateInit
+#endif
diff --git a/wai-extra.cabal b/wai-extra.cabal
--- a/wai-extra.cabal
+++ b/wai-extra.cabal
@@ -1,5 +1,5 @@
 Name:                wai-extra
-Version:             1.3.4.5
+Version:             1.3.4.6
 Synopsis:            Provides some basic WAI handlers and middleware.
 Description:         The goal here is to provide common features without many dependencies.
 License:             MIT
@@ -61,6 +61,7 @@
                      Network.Wai.Middleware.Vhost
                      Network.Wai.Middleware.HttpAuth
                      Network.Wai.Parse
+  other-modules:     Network.Wai.Middleware.RequestLogger.Internal
   ghc-options:       -Wall
 
 
