diff --git a/bench/Bench.hs b/bench/Bench.hs
--- a/bench/Bench.hs
+++ b/bench/Bench.hs
@@ -6,15 +6,15 @@
 
 module Main (main) where
 
+import Criterion
 import Criterion.Main
-import Criterion.Config
 import Data.Int
 import System.Logger.Message
 
 import qualified Data.ByteString.Lazy as L
 
 main :: IO ()
-main = defaultMainWith defaultConfig (return ())
+main = defaultMain
     [ bgroup "direct"
         [ bench "msg/8"  (whnf (f False) 8)
         , bench "msg/16" (whnf (f False) 16)
diff --git a/src/System/Logger.hs b/src/System/Logger.hs
--- a/src/System/Logger.hs
+++ b/src/System/Logger.hs
@@ -52,13 +52,12 @@
 
 import Prelude hiding (log)
 import Control.Applicative
+import Control.AutoUpdate
 import Control.Monad
 import Control.Monad.IO.Class
-import Data.ByteString (ByteString)
 import Data.Maybe (fromMaybe)
 import Data.Text (Text)
 import Data.UnixTime
-import System.Date.Cache
 import System.Environment (lookupEnv)
 import System.Logger.Message as M
 import System.Logger.Settings
@@ -69,7 +68,6 @@
     { logger    :: FL.LoggerSet
     , settings  :: Settings
     , getDate   :: IO (Msg -> Msg)
-    , closeDate :: Maybe DateCacheCloser
     }
 
 -- | Create a new 'Logger' with the given 'Settings'.
@@ -83,21 +81,18 @@
     l <- fmap (readNote "Invalid LOG_LEVEL")  <$> lookupEnv "LOG_LEVEL"
     e <- fmap (readNote "Invalid LOG_NETSTR") <$> lookupEnv "LOG_NETSTR"
     g <- fn (output s) (fromMaybe (bufSize s) n)
-    c <- clockCache (format s)
     let s' = setLogLevel (fromMaybe (logLevel s) l)
            . setNetStrings (fromMaybe (netstrings s) e)
            $ s
-    return $ Logger g s' (maybe (return id) (liftM msg) (fst <$> c)) (snd <$> c)
+    Logger g s' <$> mkGetDate (format s)
   where
     fn StdOut   = FL.newStdoutLoggerSet
     fn StdErr   = FL.newStderrLoggerSet
     fn (Path p) = flip FL.newFileLoggerSet p
 
-    clockCache "" = return Nothing
-    clockCache f  = Just <$> clockDateCacher (DateCacheConf getUnixTime (fmt f))
-
-    fmt :: DateFormat -> UnixTime -> IO ByteString
-    fmt d = return . formatUnixTimeGMT (template d)
+    mkGetDate "" = return (return id)
+    mkGetDate f  = mkAutoUpdate defaultUpdateSettings
+        { updateAction = msg . formatUnixTimeGMT (template f) <$> getUnixTime }
 
 -- | Invokes 'new' with default settings and the given output as log sink.
 create :: MonadIO m => Output -> m Logger
@@ -141,9 +136,7 @@
 
 -- | Closes the logger.
 close :: MonadIO m => Logger -> m ()
-close g = liftIO $ do
-    fromMaybe (return ()) (closeDate g)
-    FL.rmLoggerSet (logger g)
+close g = liftIO $ FL.rmLoggerSet (logger g)
 
 -- | Inspect this logger's threshold.
 level :: Logger -> Level
diff --git a/tinylog.cabal b/tinylog.cabal
--- a/tinylog.cabal
+++ b/tinylog.cabal
@@ -1,5 +1,5 @@
 name:                 tinylog
-version:              0.10.2
+version:              0.10.3
 synopsis:             Simplistic logging using fast-logger.
 author:               Toralf Wittner
 maintainer:           Toralf Wittner <tw@dtex.org>
@@ -37,7 +37,7 @@
     build-depends:
           base              == 4.*
         , bytestring        >= 0.10.4 && < 0.11
-        , date-cache        == 0.3.*
+        , auto-update       == 0.1.*
         , double-conversion == 0.2.*
         , fast-logger       >= 2.1.4  && < 2.3
         , text              >= 0.11   && < 1.2
@@ -53,5 +53,5 @@
     build-depends:
           base       == 4.*
         , bytestring
-        , criterion  == 0.8.*
+        , criterion  >= 1.0.0.2 && < 1.1
         , tinylog
