-- 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:
--
--
-- - standard output
-- - PostgreSQL
--
@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