diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+# log -base-0.10.0.0 (2021-06-09)
+* Drop `MonadTime` constraint and use system time by default.
+
 # log-base-0.9.1.1 (2021-05-28)
 * Support GHC 9.0.
 
diff --git a/log-base.cabal b/log-base.cabal
--- a/log-base.cabal
+++ b/log-base.cabal
@@ -1,5 +1,5 @@
 name:                log-base
-version:             0.9.1.1
+version:             0.10.0.0
 synopsis:            Structured logging solution (base package)
 
 description:         A library that provides a way to record structured log
@@ -47,7 +47,6 @@
                        exceptions >=0.6,
                        mmorph >=1.0.9 && <1.2,
                        monad-control >=0.3,
-                       monad-time >= 0.2,
                        mtl,
                        semigroups,
                        stm >=2.4,
diff --git a/src/Log/Class.hs b/src/Log/Class.hs
--- a/src/Log/Class.hs
+++ b/src/Log/Class.hs
@@ -1,9 +1,6 @@
 -- | The 'MonadLog' type class of monads with logging capabilities.
-{-# OPTIONS_GHC -fno-warn-deprecated-flags #-}
-{-# LANGUAGE OverlappingInstances #-}
 module Log.Class (
     UTCTime
-  , MonadTime(..)
   , MonadLog(..)
   , logAttention
   , logInfo
@@ -13,7 +10,6 @@
   , logTrace_
   ) where
 
-import Control.Monad.Time
 import Control.Monad.Trans
 import Control.Monad.Trans.Control
 import Data.Aeson
@@ -29,13 +25,13 @@
 -- 'MonadLog' carries with it some associated state (the logging
 -- environment) that can be modified locally with 'localData' and
 -- 'localDomain'.
-class MonadTime m => MonadLog m where
+class Monad m => MonadLog m where
   -- | Write a message to the log.
-  logMessage  :: UTCTime  -- ^ Time of the event.
-              -> LogLevel -- ^ Log level.
-              -> T.Text   -- ^ Log message.
-              -> Value    -- ^ Additional data associated with the message.
-              -> m ()
+  logMessage
+    :: LogLevel -- ^ Log level.
+    -> T.Text   -- ^ Log message.
+    -> Value    -- ^ Additional data associated with the message.
+    -> m ()
   -- | Extend the additional data associated with each log message locally.
   localData   :: [Pair] -> m a -> m a
   -- | Extend the current application domain locally.
@@ -45,12 +41,12 @@
   getLoggerEnv :: m LoggerEnv
 
 -- | Generic, overlapping instance.
-instance (
+instance {-# OVERLAPPABLE #-} (
     MonadLog m
   , Monad (t m)
   , MonadTransControl t
   ) => MonadLog (t m) where
-    logMessage time level message = lift . logMessage time level message
+    logMessage level message = lift . logMessage level message
     localData data_ m = controlT $ \run -> localData data_ (run m)
     localDomain domain m = controlT $ \run -> localDomain domain (run m)
     getLoggerEnv = lift getLoggerEnv
@@ -64,17 +60,17 @@
 -- | Log a message and its associated data using current time as the
 -- event time and the 'LogAttention' log level.
 logAttention :: (MonadLog m, ToJSON a) => T.Text -> a -> m ()
-logAttention msg = logNow LogAttention msg . toJSON
+logAttention msg = logMessage LogAttention msg . toJSON
 
 -- | Log a message and its associated data using current time as the
 -- event time and the 'LogInfo' log level.
 logInfo :: (MonadLog m, ToJSON a) => T.Text -> a -> m ()
-logInfo msg = logNow LogInfo msg . toJSON
+logInfo msg = logMessage LogInfo msg . toJSON
 
 -- | Log a message and its associated data using current time as the
 -- event time and the 'LogTrace' log level.
 logTrace :: (MonadLog m, ToJSON a) => T.Text -> a -> m ()
-logTrace msg = logNow LogTrace msg . toJSON
+logTrace msg = logMessage LogTrace msg . toJSON
 
 -- | Like 'logAttention', but without any additional associated data.
 logAttention_ :: MonadLog m => T.Text -> m ()
@@ -87,12 +83,3 @@
 -- | Like 'logTrace', but without any additional associated data.
 logTrace_ :: MonadLog m => T.Text -> m ()
 logTrace_ = (`logTrace` emptyObject)
-
-----------------------------------------
-
--- | Write a log message using the given log level, message text and
--- additional data. Current time is used as the event time.
-logNow :: MonadLog m => LogLevel -> T.Text -> Value -> m ()
-logNow level message data_ = do
-  time <- currentTime
-  logMessage time level message data_
diff --git a/src/Log/Monad.hs b/src/Log/Monad.hs
--- a/src/Log/Monad.hs
+++ b/src/Log/Monad.hs
@@ -16,7 +16,6 @@
 import Control.Monad.Base
 import Control.Monad.Catch
 import Control.Monad.Error.Class
-import Control.Monad.Fail (MonadFail)
 import Control.Monad.IO.Unlift
 import Control.Monad.Morph (MFunctor (..))
 import Control.Monad.Reader
@@ -25,7 +24,9 @@
 import Control.Monad.Writer.Class
 import Data.Aeson
 import Data.Text (Text)
+import Data.Time
 import Prelude
+import qualified Control.Monad.Fail as MF
 import qualified Control.Exception as E
 import qualified Data.HashMap.Strict as H
 
@@ -38,7 +39,7 @@
 -- | Monad transformer that adds logging capabilities to the underlying monad.
 newtype LogT m a = LogT { unLogT :: InnerLogT m a }
   deriving (Alternative, Applicative, Functor, Monad, MonadBase b, MonadCatch
-           ,MonadIO, MonadMask, MonadPlus, MonadThrow, MonadTrans, MonadFail
+           ,MonadIO, MonadMask, MonadPlus, MonadThrow, MonadTrans, MF.MonadFail
            ,MonadError e, MonadWriter w, MonadState s)
 
 instance MonadReader r m => MonadReader r (LogT m) where
@@ -139,9 +140,10 @@
   withRunInIO inner = LogT $ withRunInIO $ \run -> inner (run . unLogT)
   {-# INLINE withRunInIO #-}
 
-instance (MonadBase IO m, MonadTime m) => MonadLog (LogT m) where
-  logMessage time level message data_ = LogT . ReaderT $ \logEnv ->
-    liftBase $ logMessageIO logEnv time level message data_
+instance MonadBase IO m => MonadLog (LogT m) where
+  logMessage level message data_ = LogT . ReaderT $ \logEnv -> liftBase $ do
+    time <- getCurrentTime
+    logMessageIO logEnv time level message data_
 
   localData data_ =
     LogT . local (\e -> e { leData = data_ ++ leData e }) . unLogT
