diff --git a/Control/Monad/Logger.hs b/Control/Monad/Logger.hs
--- a/Control/Monad/Logger.hs
+++ b/Control/Monad/Logger.hs
@@ -75,7 +75,7 @@
 import Control.Applicative (Applicative (..))
 import Control.Concurrent.STM
 import Control.Concurrent.STM.TBChan
-import Control.Exception.Lifted
+import Control.Exception.Lifted (onException)
 import Control.Monad (liftM, ap, when, void)
 import Control.Monad.Base (MonadBase (liftBase))
 import Control.Monad.Loops (untilM)
@@ -86,6 +86,7 @@
 import Control.Monad.Trans.Resource (MonadResource (liftResourceT), MonadThrow, monadThrow)
 #if MIN_VERSION_resourcet(1,1,0)
 import Control.Monad.Trans.Resource (throwM)
+import Control.Monad.Catch (MonadCatch (..))
 #endif
 
 import Control.Monad.Trans.Identity ( IdentityT)
@@ -265,6 +266,15 @@
 #if MIN_VERSION_resourcet(1,1,0)
 instance MonadThrow m => MonadThrow (NoLoggingT m) where
     throwM = Trans.lift . throwM
+
+instance MonadCatch m => MonadCatch (NoLoggingT m) where
+    catch (NoLoggingT m) c =
+        NoLoggingT $ m `catch` \e -> runNoLoggingT (c e)
+    mask a = NoLoggingT $ mask $ \u -> runNoLoggingT (a $ q u)
+      where q u (NoLoggingT b) = NoLoggingT $ u b
+    uninterruptibleMask a =
+        NoLoggingT $ uninterruptibleMask $ \u -> runNoLoggingT (a $ q u)
+      where q u (NoLoggingT b) = NoLoggingT $ u b
 #else
 instance MonadThrow m => MonadThrow (NoLoggingT m) where
     monadThrow = Trans.lift . monadThrow
@@ -321,6 +331,14 @@
 #if MIN_VERSION_resourcet(1,1,0)
 instance MonadThrow m => MonadThrow (LoggingT m) where
     throwM = Trans.lift . throwM
+instance MonadCatch m => MonadCatch (LoggingT m) where
+  catch (LoggingT m) c =
+      LoggingT $ \r -> m r `catch` \e -> runLoggingT (c e) r
+  mask a = LoggingT $ \e -> mask $ \u -> runLoggingT (a $ q u) e
+    where q u (LoggingT b) = LoggingT (u . b)
+  uninterruptibleMask a =
+    LoggingT $ \e -> uninterruptibleMask $ \u -> runLoggingT (a $ q u) e
+      where q u (LoggingT b) = LoggingT (u . b)
 #else
 instance MonadThrow m => MonadThrow (LoggingT m) where
     monadThrow = Trans.lift . monadThrow
diff --git a/monad-logger.cabal b/monad-logger.cabal
--- a/monad-logger.cabal
+++ b/monad-logger.cabal
@@ -1,5 +1,5 @@
 name:                monad-logger
-version:             0.3.4.1
+version:             0.3.5
 synopsis:            A class of monads which can log messages.
 description:         This package uses template-haskell for determining source code locations of messages.
 homepage:            https://github.com/kazu-yamamoto/logger
@@ -35,6 +35,7 @@
                      , mtl
                      , bytestring
                      , blaze-builder
+                     , exceptions
   if flag(template_haskell)
      build-depends:     template-haskell
 
