diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,9 @@
+# ChangeLog for monad-logger
+
+## 0.3.32
+
+* Compat with `unliftio-core` 0.2
+
 ## 0.3.31
 
 * Re-export `fromLogStr` to make implementing custom instances more convenient.
diff --git a/Control/Monad/Logger.hs b/Control/Monad/Logger.hs
--- a/Control/Monad/Logger.hs
+++ b/Control/Monad/Logger.hs
@@ -115,7 +115,7 @@
 import Control.Concurrent.STM
 import Control.Concurrent.STM.TBChan
 import Control.Exception.Lifted (onException, bracket)
-import Control.Monad (liftM, ap, when, void, forever)
+import Control.Monad (liftM, when, void, forever)
 import Control.Monad.Base (MonadBase (liftBase), liftBaseDefault)
 #if MIN_VERSION_base(4, 9, 0)
 import qualified Control.Monad.Fail as Fail
@@ -170,8 +170,6 @@
 import GHC.Stack as GHC
 #endif
 
-import Prelude hiding (catch)
-
 import Data.Conduit.Lazy (MonadActive, monadActive)
 
 data LogLevel = LevelDebug | LevelInfo | LevelWarn | LevelError | LevelOther Text
@@ -404,9 +402,11 @@
 
 -- | @since 0.3.26
 instance MonadUnliftIO m => MonadUnliftIO (NoLoggingT m) where
-  askUnliftIO = NoLoggingT $
-                withUnliftIO $ \u ->
-                return (UnliftIO (unliftIO u . runNoLoggingT))
+  {-# INLINE withRunInIO #-}
+  withRunInIO inner =
+    NoLoggingT $
+    withRunInIO $ \run ->
+    inner (run . runNoLoggingT)
 
 -- | @since 0.3.28
 type LogLine = (Loc, LogSource, LogLevel, LogStr)
@@ -626,9 +626,11 @@
 
 -- | @since 0.3.26
 instance MonadUnliftIO m => MonadUnliftIO (LoggingT m) where
-  askUnliftIO = LoggingT $ \f ->
-                withUnliftIO $ \u ->
-                return (UnliftIO (unliftIO u . flip runLoggingT f))
+  {-# INLINE withRunInIO #-}
+  withRunInIO inner =
+    LoggingT $ \r ->
+    withRunInIO $ \run ->
+    inner (run . flip runLoggingT r)
 
 defaultOutput :: Handle
               -> Loc
@@ -699,10 +701,10 @@
 --
 -- @since 0.3.22
 runFileLoggingT :: MonadBaseControl IO m => FilePath -> LoggingT m a -> m a
-runFileLoggingT fp log = bracket
+runFileLoggingT fp logt = bracket
     (liftBase $ openFile fp AppendMode)
     (liftBase . hClose)
-    $ \h -> liftBase (hSetBuffering h LineBuffering) >> (runLoggingT log) (defaultOutput h)
+    $ \h -> liftBase (hSetBuffering h LineBuffering) >> (runLoggingT logt) (defaultOutput h)
 
 -- | Run a block using a @MonadLogger@ instance which prints to stderr.
 --
@@ -726,7 +728,7 @@
 runChanLoggingT :: MonadIO m => Chan LogLine -> LoggingT m a -> m a
 runChanLoggingT chan = (`runLoggingT` sink chan)
     where
-        sink chan loc src lvl msg = writeChan chan (loc,src,lvl,msg)
+        sink chan' loc src lvl msg = writeChan chan' (loc,src,lvl,msg)
 
 -- | Read logging tuples from an unbounded channel and log them into a
 --   `MonadLoggerIO` monad, forever.
diff --git a/monad-logger.cabal b/monad-logger.cabal
--- a/monad-logger.cabal
+++ b/monad-logger.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.2.
+-- This file has been generated from package.yaml by hpack version 0.33.0.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 732ba66e7c9140cd574be4c9bda3f12c1b8f9b6ddf7f75d373f6a0c518c292f0
+-- hash: 3bc78e9ad84902b767b9156b71057661558496979be02259b5e9161b3268b097
 
 name:           monad-logger
-version:        0.3.31
+version:        0.3.32
 synopsis:       A class of monads which can log messages.
 description:    See README and Haddocks at <https://www.stackage.org/package/monad-logger>
 category:       System
