-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | An extensible log effect using extensible-effects -- -- Any help (especially documentation) is very welcome, @package log-effect @version 0.4.0.1 module Control.Eff.Log data Log a v Log :: a -> v -> Log a v -- | a monadic action that does the real logging type Logger m l = forall v. Log l v -> m () -- | Log something. logE :: (Typeable l, Member (Log l) 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 :: (Typeable l, 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' :: (Typeable l, Member (Log l) r) => (l -> Bool) -> proxy l -> Eff r a -> Eff r a -- | Collect log messages in a list. runLogPure :: Typeable l => Eff (Log l :> r) a -> Eff r (a, [l]) -- | Log to stdout. runLogStdout :: (Typeable l, ToLogStr l, SetMember Lift (Lift IO) r) => proxy l -> Eff (Log l :> r) a -> Eff r a -- | Log to stderr. runLogStderr :: (Typeable l, ToLogStr l, SetMember Lift (Lift IO) r) => proxy l -> Eff (Log l :> r) a -> Eff r a -- | Log to file. runLogFile :: (Typeable l, ToLogStr l, SetMember Lift (Lift IO) r) => FilePath -> proxy l -> Eff (Log l :> r) a -> Eff r a -- | Log to a file using a LoggerSet. -- -- Note, that you will still have to call flushLogStr on the -- LoggerSet at one point. -- -- With that function you can combine a logger in a surrounding IO action -- with a logger in the Eff effect. -- --
-- data Proxy a = Proxy
--
-- main :: IO ()
-- main = do
-- loggerSet <- newStderrLoggerSet defaultBufSize
-- pushLogStr loggerSet "logging from outer space^WIO\n"
-- runLift $ runLogWithLoggerSet loggerSet (Proxy :: Proxy String) $
-- logE ("logging from within Eff" :: String)
-- flushLogStr loggerSet
--
runLogWithLoggerSet :: (Typeable l, ToLogStr l, SetMember Lift (Lift IO) r) => LoggerSet -> proxy l -> Eff (Log l :> r) a -> Eff r a
-- | Run the Logger action in the base monad for every log line.
runLog :: (Typeable l, Typeable1 m, SetMember Lift (Lift m) r) => Logger m l -> Eff (Log l :> r) a -> Eff r a
instance Typeable2 Log
instance Functor (Log a)
module Control.Eff.Log.Simple
type SimpleLog a = Log (Severity, a)
data Severity
DEBUG :: Severity
INFO :: Severity
NOTICE :: Severity
WARNING :: Severity
ERROR :: Severity
CRITICAL :: Severity
ALERT :: Severity
PANIC :: Severity
logTo :: (Typeable l, Member (Log (Severity, l)) r) => Severity -> l -> Eff r ()
debug :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
info :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
notice :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
warning :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
error :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
critical :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
alert :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
panic :: (Typeable l, Member (Log (Severity, l)) r) => l -> Eff r ()
instance Typeable Severity
instance Bounded Severity
instance Enum Severity
instance Eq Severity
instance Ord Severity
instance Read Severity
instance Show Severity
instance ToLogStr a => ToLogStr (Severity, a)
instance ToLogStr Severity