-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | An extensible log effect using extensible-effects
--
-- Introduce two logging effects to your extensible effects arsenal
@package log-effect
@version 1.1.1
module Control.Eff.Log
-- | Simple log effect, useful in pure code
data Log l v
-- | A more advanced version of Log. Adds an ability to log from
-- multiple threads.
data LogM m l v
-- | Monadic action that does the real logging
type Logger m l = l -> m ()
-- | Logger that outputs messages to stdout
stdoutLogger :: (LogMessage l, MonadBase IO m) => Logger m l
-- | Logger that outputs messages to stderr
stderrLogger :: (LogMessage l, MonadBase IO m) => Logger m l
-- | Handy typeclass to convert log messages for output
class LogMessage l
toMsg :: LogMessage l => l -> ByteString
-- | Log something.
logE :: Member (Log l) r => l -> Eff r ()
-- | Log something using LogM effect
logM :: (Member (LogM m l) r, Lifted m r) => l -> Eff r ()
-- | Filter Log entries with a predicate.
--
-- Note that, most of the time an explicit type signature for the
-- predicate will be required.
filterLog :: forall l r a. Member (Log l) r => (l -> Bool) -> Eff r a -> Eff r a
-- | Filter Log entries with a predicate and a proxy.
--
-- This is the same as filterLog but with a proxy l for type
-- inference.
filterLog' :: Member (Log l) r => (l -> Bool) -> proxy l -> Eff r a -> Eff r a
-- | Collect log messages in a list.
runLogPure :: Eff (Log l : r) a -> Eff r (a, [l])
-- | Run the Logger action in the base monad for every log line.
runLog :: Lifted m r => Logger m l -> Eff (Log l : r) a -> Eff r a
-- | Run the Logger action in the base monad for every log line.
runLogM :: Lifted m r => Logger m l -> Eff (LogM m l : r) a -> Eff r a
instance Control.Eff.Log.LogMessage Data.ByteString.Internal.ByteString
instance Control.Eff.Log.LogMessage [GHC.Types.Char]
instance Control.Eff.Log.LogMessage Data.Text.Internal.Text
instance (Control.Monad.Base.MonadBase m m, Control.Eff.Lift.Lifted m r, Control.Monad.Trans.Control.MonadBaseControl m (Control.Eff.Internal.Eff r)) => Control.Monad.Trans.Control.MonadBaseControl m (Control.Eff.Internal.Eff (Control.Eff.Log.LogM m l : r))
instance (Control.Monad.Base.MonadBase m m, Control.Eff.Lift.Lifted m r, Control.Monad.Trans.Control.MonadBaseControl m (Control.Eff.Internal.Eff r)) => Control.Monad.Trans.Control.MonadBaseControl m (Control.Eff.Internal.Eff (Control.Eff.Log.Log l : r))