diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for rio-orphans
 
+## 0.1.1.0
+
+* Add an instance for `MonadLogger` typeclass, from the `monad-logger` library
+
 ## 0.1.0.0
 
 * Initial release
diff --git a/rio-orphans.cabal b/rio-orphans.cabal
--- a/rio-orphans.cabal
+++ b/rio-orphans.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: a68a1341535748f5bf8f2fa1202835ba7a858683f5349848561893fd880e7824
+-- hash: 77de0e86872a5e0ec50e213804741ac79e8f08b768bec53e0d190ae09cc14b40
 
 name:           rio-orphans
-version:        0.1.0.0
+version:        0.1.1.0
 synopsis:       Orphan instances for the RIO type in the rio package
 description:    See README and Haddocks at <https://www.stackage.org/package/rio-orphans>
 category:       Control
@@ -35,7 +35,9 @@
   build-depends:
       base >=4.9 && <10
     , exceptions
+    , fast-logger
     , monad-control
+    , monad-logger
     , resourcet
     , rio
     , transformers-base
@@ -53,8 +55,10 @@
   build-depends:
       base >=4.9 && <10
     , exceptions
+    , fast-logger
     , hspec
     , monad-control
+    , monad-logger
     , resourcet
     , rio
     , rio-orphans
diff --git a/src/RIO/Orphans.hs b/src/RIO/Orphans.hs
--- a/src/RIO/Orphans.hs
+++ b/src/RIO/Orphans.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE ImplicitParams #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE NoImplicitPrelude #-}
@@ -19,6 +20,11 @@
 import Control.Monad.Trans.Resource (runResourceT)
 import Control.Monad.Trans.Control (MonadBaseControl (..))
 
+import qualified Control.Monad.Logger as LegacyLogger
+import Control.Monad.Logger (MonadLogger (..), LogStr)
+import System.Log.FastLogger (fromLogStr)
+import qualified GHC.Stack as GS
+
 -- | @since 0.1.0.0
 deriving instance MonadCatch (RIO env)
 
@@ -35,6 +41,32 @@
   liftBaseWith = withRunInIO
   restoreM = return
 
+-- | @since 0.1.1.0
+instance Display LogStr where
+  display = displayBytesUtf8 . fromLogStr
+
+-- | @since 0.1.1.0
+instance HasLogFunc env => MonadLogger (RIO env) where
+  monadLoggerLog loc source level msg =
+      let ?callStack = GS.fromCallSiteList [("", GS.SrcLoc
+            { GS.srcLocPackage = LegacyLogger.loc_package loc
+            , GS.srcLocModule = LegacyLogger.loc_module loc
+            , GS.srcLocFile = LegacyLogger.loc_filename loc
+            , GS.srcLocStartLine = fst $ LegacyLogger.loc_start loc
+            , GS.srcLocStartCol = snd $ LegacyLogger.loc_start loc
+            , GS.srcLocEndLine = fst $ LegacyLogger.loc_end loc
+            , GS.srcLocEndCol = snd $ LegacyLogger.loc_end loc
+            })]
+       in logGeneric source rioLogLevel (display $ LegacyLogger.toLogStr msg)
+    where
+      rioLogLevel =
+        case level of
+          LegacyLogger.LevelDebug -> LevelDebug
+          LegacyLogger.LevelInfo  -> LevelInfo
+          LegacyLogger.LevelWarn  -> LevelWarn
+          LegacyLogger.LevelError  -> LevelError
+          LegacyLogger.LevelOther name -> LevelOther name
+
 -- | A collection of all of the registered resource cleanup actions.
 --
 -- @since 0.1.0.0
@@ -56,4 +88,3 @@
   resourceMapL = id
 instance HasResourceMap env => MonadResource (RIO env) where
   liftResourceT (ResourceT f) = view resourceMapL >>= liftIO . f
-
