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 +4/−0
- rio-orphans.cabal +6/−2
- src/RIO/Orphans.hs +32/−1
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-