-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Structured logging solution with multiple backends -- -- A library that provides a way to record structured log messages with -- multiple backends. -- -- Supported backends: -- -- @package log @version 0.4 module Log.Data -- | Available log levels. data LogLevel LogAttention :: LogLevel LogInfo :: LogLevel LogTrace :: LogLevel showLogLevel :: LogLevel -> Text readLogLevel :: Text -> LogLevel -- | Represents message to be logged. data LogMessage LogMessage :: !Text -> ![Text] -> !UTCTime -> !LogLevel -> !Text -> !Value -> LogMessage -- | Component of an application. [lmComponent] :: LogMessage -> !Text -- | Aplication log domain. [lmDomain] :: LogMessage -> ![Text] -- | Time of log. [lmTime] :: LogMessage -> !UTCTime -- | Log level. [lmLevel] :: LogMessage -> !LogLevel -- | Message to be logged. [lmMessage] :: LogMessage -> !Text -- | Additional data associated with the message. [lmData] :: LogMessage -> !Value showLogMessage :: Maybe UTCTime -> LogMessage -> Text instance GHC.Show.Show Log.Data.LogMessage instance GHC.Classes.Eq Log.Data.LogMessage instance GHC.Show.Show Log.Data.LogLevel instance GHC.Classes.Ord Log.Data.LogLevel instance GHC.Classes.Eq Log.Data.LogLevel instance GHC.Enum.Bounded Log.Data.LogLevel instance Control.DeepSeq.NFData Log.Data.LogLevel instance Data.Aeson.Types.Class.ToJSON Log.Data.LogMessage instance Control.DeepSeq.NFData Log.Data.LogMessage module Log.Internal.Logger -- | Data type representing logger. data Logger Logger :: !(LogMessage -> IO ()) -> !(STM ()) -> ![IORef ()] -> Logger [loggerWriteMessage] :: Logger -> !(LogMessage -> IO ()) [loggerWaitForWrite] :: Logger -> !(STM ()) [loggerFinalizers] :: Logger -> ![IORef ()] -- | Execute logger to serialize a LogMessage. execLogger :: Logger -> LogMessage -> IO () -- | Wait until logs stored in an internal queue are serialized. waitForLogger :: Logger -> IO () instance GHC.Base.Monoid Log.Internal.Logger.Logger module Log.Logger -- | Data type representing logger. data Logger -- | Make Logger that consumes one queued message at a time. mkLogger :: Text -> (LogMessage -> IO ()) -> IO Logger -- | Make Logger that consumes all queued messages once per second. mkBulkLogger :: Text -> ([LogMessage] -> IO ()) -> IO Logger -- | Execute logger to serialize a LogMessage. execLogger :: Logger -> LogMessage -> IO () -- | Wait until logs stored in an internal queue are serialized. waitForLogger :: Logger -> IO () module Log.Backend.PostgreSQL -- | Create logger that inserts log messages into PostgreSQL database. pgLogger :: ConnectionSource -> IO Logger instance GHC.Enum.Enum Log.Backend.PostgreSQL.InvalidEncodingRecoveryAttempt module Log.Backend.StandardOutput -- | Create logger that prints messages to standard output. stdoutLogger :: IO Logger module Log.Class -- | This is the simplest representation of UTC. It consists of the day -- number, and a time offset from midnight. Note that if a day has a leap -- second added to it, it will have 86401 seconds. data UTCTime :: * -- | Class of monads which carry the notion of the current time. class Monad m => MonadTime (m :: * -> *) currentTime :: MonadTime m => m UTCTime -- | Represents the family of monads with logging capabilities. class MonadTime m => MonadLog m logMessage :: MonadLog m => UTCTime -> LogLevel -> Text -> Value -> m () localData :: MonadLog m => [Pair] -> m a -> m a localDomain :: MonadLog m => Text -> m a -> m a logAttention :: MonadLog m => Text -> Value -> m () logInfo :: MonadLog m => Text -> Value -> m () logTrace :: MonadLog m => Text -> Value -> m () logAttention_ :: MonadLog m => Text -> m () logInfo_ :: MonadLog m => Text -> m () logTrace_ :: MonadLog m => Text -> m () instance (Log.Class.MonadLog m, GHC.Base.Monad (t m), Control.Monad.Trans.Control.MonadTransControl t) => Log.Class.MonadLog (t m) module Log.Monad -- | Data type representing logger. data Logger -- | LogT environment. data LoggerEnv LoggerEnv :: !Logger -> !Text -> ![Text] -> ![Pair] -> LoggerEnv [leLogger] :: LoggerEnv -> !Logger [leComponent] :: LoggerEnv -> !Text [leDomain] :: LoggerEnv -> ![Text] [leData] :: LoggerEnv -> ![Pair] type InnerLogT = ReaderT LoggerEnv -- | Monad transformer that adds logging capabilities to the underlying -- monad. newtype LogT m a LogT :: InnerLogT m a -> LogT m a [unLogT] :: LogT m a -> InnerLogT m a runLogT :: Text -> Logger -> LogT m a -> m a mapLogT :: (m a -> n b) -> LogT m a -> LogT n b instance Control.Monad.Trans.Class.MonadTrans Log.Monad.LogT instance Control.Monad.Catch.MonadThrow m => Control.Monad.Catch.MonadThrow (Log.Monad.LogT m) instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Log.Monad.LogT m) instance Control.Monad.Catch.MonadMask m => Control.Monad.Catch.MonadMask (Log.Monad.LogT m) instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Log.Monad.LogT m) instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadCatch (Log.Monad.LogT m) instance Control.Monad.Base.MonadBase b m => Control.Monad.Base.MonadBase b (Log.Monad.LogT m) instance GHC.Base.Monad m => GHC.Base.Monad (Log.Monad.LogT m) instance GHC.Base.Functor m => GHC.Base.Functor (Log.Monad.LogT m) instance GHC.Base.Applicative m => GHC.Base.Applicative (Log.Monad.LogT m) instance GHC.Base.Alternative m => GHC.Base.Alternative (Log.Monad.LogT m) instance Control.Monad.Trans.Control.MonadTransControl Log.Monad.LogT instance Control.Monad.Trans.Control.MonadBaseControl b m => Control.Monad.Trans.Control.MonadBaseControl b (Log.Monad.LogT m) instance (Control.Monad.Base.MonadBase GHC.Types.IO m, Control.Monad.Time.MonadTime m) => Log.Class.MonadLog (Log.Monad.LogT m) module Log -- | Create a Value from a list of name/value Pairs. If -- duplicate keys arise, earlier keys and their associated values win. object :: [Pair] -> Value (.=) :: KeyValue kv => forall v. ToJSON v => Text -> v -> kv