diff --git a/heavy-logger.cabal b/heavy-logger.cabal
--- a/heavy-logger.cabal
+++ b/heavy-logger.cabal
@@ -1,5 +1,5 @@
 name:                heavy-logger
-version:             0.3.2.1
+version:             0.3.2.2
 synopsis:            Full-weight logging based on fast-logger
 description:         This is Haskell logging library, which prefers functionality and extendability
                      over light weight and simplicity. It can use fast-logger as backend, and is compatible 
@@ -46,7 +46,7 @@
                        fast-logger >= 2.4.10,
                        monad-logger >= 0.3.22,
                        hsyslog >= 5,
-                       text-format-heavy >= 0.1.5.1,
+                       text-format-heavy >= 0.1.5.2,
                        thread-local-storage >= 0.1.1,
                        stm >= 2.4
   hs-source-dirs:      src
diff --git a/src/System/Log/Heavy/Types.hs b/src/System/Log/Heavy/Types.hs
--- a/src/System/Log/Heavy/Types.hs
+++ b/src/System/Log/Heavy/Types.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE OverloadedStrings, TypeSynonymInstances, FlexibleInstances, ExistentialQuantification, TypeFamilies, GeneralizedNewtypeDeriving, StandaloneDeriving, MultiParamTypeClasses, UndecidableInstances, AllowAmbiguousTypes, ScopedTypeVariables, FunctionalDependencies, FlexibleContexts, ConstraintKinds #-}
+{-# LANGUAGE CPP #-}
 
 -- | This module contains generic types definition, along with some utilities.
 module System.Log.Heavy.Types
@@ -22,6 +23,9 @@
 
 import Control.Monad.Reader
 import Control.Monad.Logger (MonadLogger (..))
+#if MIN_VERSION_monad_logger(0,3,10)
+import Control.Monad.Logger (MonadLoggerIO (..))
+#endif
 import Control.Monad.Trans.Control
 import Control.Exception.Lifted (bracket)
 import Language.Haskell.TH
@@ -227,6 +231,26 @@
 
       textFromLogStr :: ToLogStr str => str -> TL.Text
       textFromLogStr str = TL.fromStrict $ TE.decodeUtf8 $ fromLogStr $ toLogStr str
+
+#if MIN_VERSION_monad_logger(0,3,10)
+-- | Another compatibility instance.
+instance (Monad m, MonadIO m, HasLogging m) => MonadLoggerIO m where
+  askLoggerIO = do
+      logger <- getLogger
+      context <- getLogContext
+      return $ \loc src level msg ->
+                  logger $ LogMessage {
+                          lmLevel = logLevelToLevel level,
+                          lmSource = (splitDots $ T.unpack src),
+                          lmLocation = loc,
+                          lmFormatString = textFromLogStr msg,
+                          lmFormatVars = (),
+                          lmContext = context
+                        }
+    where
+      textFromLogStr :: ToLogStr str => str -> TL.Text
+      textFromLogStr str = TL.fromStrict $ TE.decodeUtf8 $ fromLogStr $ toLogStr str
+#endif
 
 instance F.Formatable LogStr where
   formatVar fmt str = F.formatVar fmt $ fromLogStr str
