packages feed

rio-orphans 0.1.0.0 → 0.1.1.0

raw patch · 3 files changed

+42/−3 lines, 3 filesdep +fast-loggerdep +monad-logger

Dependencies added: fast-logger, monad-logger

Files

ChangeLog.md view
@@ -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
rio-orphans.cabal view
@@ -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
src/RIO/Orphans.hs view
@@ -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-