log-effect 0.2.0.2 → 0.3.0.1
raw patch · 3 files changed
+23/−18 lines, 3 filesdep ~basedep ~extensible-effects
Dependency ranges changed: base, extensible-effects
Files
- log-effect.cabal +8/−3
- src/Control/Eff/Log.hs +5/−4
- src/Control/Eff/Log/Simple.hs +10/−11
log-effect.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: log-effect-version: 0.2.0.2+version: 0.3.0.1 synopsis: An extensible log effect using extensible-effects description: Any help (especially documentation) is very welcome, homepage: https://github.com/ibotty/log-effect@@ -21,10 +21,15 @@ , Control.Eff.Log.Simple -- other-modules: -- other-extensions: - build-depends: base >=4.6 && <4.7+ build-depends: base >=4.6 && <4.8 , bytestring >=0.10.2 && <0.11- , extensible-effects >=1.2 && <1.3+ , extensible-effects ==1.4.* || ==1.7.* , fast-logger >=2.1 && <2.2 , time >=1.4 && <1.5 hs-source-dirs: src default-language: Haskell2010++source-repository head+ type: git+ location: https://github.com/ibotty/log-effect+
src/Control/Eff/Log.hs view
@@ -6,6 +6,7 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-} module Control.Eff.Log ( Log(Log, logLine) , ShowLog(showLog)@@ -18,7 +19,7 @@ ) where import Control.Applicative ((<$>))-import Control.Eff ( Eff, SetMember, VE(..), (:>)+import Control.Eff ( Eff, Member, SetMember, VE(..), (:>) , admin, handleRelay, inj, interpose, send) import Control.Eff.Lift (Lift, lift) import Data.Typeable (Typeable, Typeable1)@@ -31,7 +32,7 @@ , logNext :: v } deriving (Typeable, Functor) -instance SetMember Log (Log m) (Log m :> a)+instance Member (Log m) r => SetMember Log (Log m) r class ShowLog l where showLog :: l -> LogStr@@ -42,7 +43,7 @@ -- | a monadic action that does the real logging type Logger m l = forall v. Log l v -> m () -logE :: (Typeable l, SetMember Log (Log l) r)+logE :: (Typeable l, Member (Log l) r) => l -> Eff r () logE line = send $ \next -> inj (Log line (next ())) @@ -62,7 +63,7 @@ go (E req) = handleRelay req go performLog performLog l = lift (logger l) >> go (logNext l) -filterLog :: (Typeable l, SetMember Log (Log l) r)+filterLog :: (Typeable l, Member (Log l) r) => (l -> Bool) -> Eff r a -> Eff r a filterLog f = go . admin where go (Val v) = return v
src/Control/Eff/Log/Simple.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}@@ -20,7 +19,7 @@ ) where import Prelude hiding (error)-import Control.Eff (Eff, SetMember)+import Control.Eff (Eff, Member) import Control.Eff.Log import Data.Monoid ((<>)) import Data.Typeable (Typeable)@@ -29,32 +28,32 @@ data Severity = DEBUG | INFO | NOTICE | WARNING | ERROR | CRITICAL | ALERT | PANIC deriving (Bounded, Enum, Eq, Ord, Read, Show, Typeable) -logTo :: (Typeable l, SetMember Log (Log (Severity, l)) r)+logTo :: (Typeable l, Member (Log (Severity, l)) r) => Severity -> l -> Eff r () logTo sev line = logE (sev, line) -debug :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()+debug :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r () debug = logTo DEBUG -info :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()+info :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r () info = logTo INFO -notice :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()+notice :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r () notice = logTo NOTICE -warning :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()+warning :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r () warning = logTo WARNING -error :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()+error :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r () error = logTo ERROR -critical :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()+critical :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r () critical = logTo CRITICAL -alert :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()+alert :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r () alert = logTo ALERT -panic :: (Typeable l, SetMember Log (Log (Severity, l)) r) => l -> Eff r ()+panic :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r () panic = logTo PANIC type SimpleLog a = Log (Severity, a)