-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Simple logging abstraction that allows multiple back-ends
--   
--   Simple logging abstraction that allows multiple back-ends
@package logging-facade
@version 0.1.1

module System.Logging.Facade.Types
data LogLevel
TRACE :: LogLevel
DEBUG :: LogLevel
INFO :: LogLevel
WARN :: LogLevel
ERROR :: LogLevel
data Location
Location :: String -> String -> String -> Int -> Int -> Location
[locationPackage] :: Location -> String
[locationModule] :: Location -> String
[locationFile] :: Location -> String
[locationLine] :: Location -> Int
[locationColumn] :: Location -> Int
data LogRecord
LogRecord :: LogLevel -> Maybe Location -> String -> LogRecord
[logRecordLevel] :: LogRecord -> LogLevel
[logRecordLocation] :: LogRecord -> Maybe Location
[logRecordMessage] :: LogRecord -> String
instance GHC.Show.Show System.Logging.Facade.Types.LogRecord
instance GHC.Classes.Eq System.Logging.Facade.Types.LogRecord
instance GHC.Show.Show System.Logging.Facade.Types.Location
instance GHC.Classes.Eq System.Logging.Facade.Types.Location
instance GHC.Enum.Enum System.Logging.Facade.Types.LogLevel
instance GHC.Enum.Bounded System.Logging.Facade.Types.LogLevel
instance GHC.Classes.Ord System.Logging.Facade.Types.LogLevel
instance GHC.Show.Show System.Logging.Facade.Types.LogLevel
instance GHC.Classes.Eq System.Logging.Facade.Types.LogLevel

module System.Logging.Facade.Sink

-- | A consumer for log records
type LogSink = LogRecord -> IO ()

-- | A log sink that writes log messages to <a>stderr</a>
defaultLogSink :: LogSink

-- | Set the global log sink.
setLogSink :: LogSink -> IO ()

-- | Return the global log sink.
getLogSink :: IO LogSink

module System.Logging.Facade.Class

-- | A type class for monads with logging support
class Monad m => Logging m
consumeLogRecord :: Logging m => LogRecord -> m ()

-- | Log messages that are produced in the <a>IO</a> monad are consumed by
--   the global <a>LogSink</a>.
instance System.Logging.Facade.Class.Logging GHC.Types.IO
instance System.Logging.Facade.Class.Logging m => System.Logging.Facade.Class.Logging (Control.Monad.Trans.Cont.ContT r m)
instance (Control.Monad.Trans.Error.Error e, System.Logging.Facade.Class.Logging m) => System.Logging.Facade.Class.Logging (Control.Monad.Trans.Error.ErrorT e m)
instance System.Logging.Facade.Class.Logging m => System.Logging.Facade.Class.Logging (Control.Monad.Trans.Identity.IdentityT m)
instance System.Logging.Facade.Class.Logging m => System.Logging.Facade.Class.Logging (Control.Monad.Trans.List.ListT m)
instance System.Logging.Facade.Class.Logging m => System.Logging.Facade.Class.Logging (Control.Monad.Trans.Maybe.MaybeT m)
instance System.Logging.Facade.Class.Logging m => System.Logging.Facade.Class.Logging (Control.Monad.Trans.Reader.ReaderT r m)
instance (GHC.Base.Monoid w, System.Logging.Facade.Class.Logging m) => System.Logging.Facade.Class.Logging (Control.Monad.Trans.RWS.Lazy.RWST r w s m)
instance (GHC.Base.Monoid w, System.Logging.Facade.Class.Logging m) => System.Logging.Facade.Class.Logging (Control.Monad.Trans.RWS.Strict.RWST r w s m)
instance System.Logging.Facade.Class.Logging m => System.Logging.Facade.Class.Logging (Control.Monad.Trans.State.Lazy.StateT s m)
instance System.Logging.Facade.Class.Logging m => System.Logging.Facade.Class.Logging (Control.Monad.Trans.State.Strict.StateT s m)
instance (GHC.Base.Monoid w, System.Logging.Facade.Class.Logging m) => System.Logging.Facade.Class.Logging (Control.Monad.Trans.Writer.Lazy.WriterT w m)
instance (GHC.Base.Monoid w, System.Logging.Facade.Class.Logging m) => System.Logging.Facade.Class.Logging (Control.Monad.Trans.Writer.Strict.WriterT w m)
instance System.Logging.Facade.Class.Logging m => System.Logging.Facade.Class.Logging (Control.Monad.Trans.Except.ExceptT e m)


-- | This module is intended to be imported qualified:
--   
--   <pre>
--   import qualified System.Logging.Facade as Log
--   </pre>
module System.Logging.Facade

-- | Produce a log message with specified log level.
log :: (?loc :: CallStack) => Logging m => LogLevel -> String -> m ()

-- | Produce a log message with log level <a>TRACE</a>.
trace :: (?loc :: CallStack) => Logging m => String -> m ()

-- | Produce a log message with log level <a>DEBUG</a>.
debug :: (?loc :: CallStack) => Logging m => String -> m ()

-- | Produce a log message with log level <a>INFO</a>.
info :: (?loc :: CallStack) => Logging m => String -> m ()

-- | Produce a log message with log level <a>WARN</a>.
warn :: (?loc :: CallStack) => Logging m => String -> m ()

-- | Produce a log message with log level <a>ERROR</a>.
error :: (?loc :: CallStack) => Logging m => String -> m ()

-- | A type class for monads with logging support
class Monad m => Logging m
data LogLevel
TRACE :: LogLevel
DEBUG :: LogLevel
INFO :: LogLevel
WARN :: LogLevel
ERROR :: LogLevel
