module Log.Class (
UTCTime
, MonadLog(..)
, logAttention
, logInfo
, logTrace
, logAttention_
, logInfo_
, logTrace_
) where
import Control.Monad.Trans
import Control.Monad.Trans.Control
import Data.Aeson
import Data.Aeson.Types
import Data.Time
import qualified Data.Text as T
import Log.Data
import Log.Logger
class Monad m => MonadLog m where
logMessage
:: LogLevel
-> T.Text
-> Value
-> m ()
localData :: [Pair] -> m a -> m a
localDomain :: T.Text -> m a -> m a
localMaxLogLevel :: LogLevel -> m a -> m a
getLoggerEnv :: m LoggerEnv
instance {-# OVERLAPPABLE #-} (
MonadLog m
, Monad (t m)
, MonadTransControl t
) => MonadLog (t m) where
logMessage :: LogLevel -> Text -> Value -> t m ()
logMessage LogLevel
level Text
message = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *).
MonadLog m =>
LogLevel -> Text -> Value -> m ()
logMessage LogLevel
level Text
message
localData :: forall a. [Pair] -> t m a -> t m a
localData [Pair]
data_ t m a
m = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTransControl t, Monad (t m), Monad m) =>
(Run t -> m (StT t a)) -> t m a
controlT forall a b. (a -> b) -> a -> b
$ \Run t
run -> forall (m :: * -> *) a. MonadLog m => [Pair] -> m a -> m a
localData [Pair]
data_ (Run t
run t m a
m)
localDomain :: forall a. Text -> t m a -> t m a
localDomain Text
domain t m a
m = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTransControl t, Monad (t m), Monad m) =>
(Run t -> m (StT t a)) -> t m a
controlT forall a b. (a -> b) -> a -> b
$ \Run t
run -> forall (m :: * -> *) a. MonadLog m => Text -> m a -> m a
localDomain Text
domain (Run t
run t m a
m)
localMaxLogLevel :: forall a. LogLevel -> t m a -> t m a
localMaxLogLevel LogLevel
level t m a
m = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTransControl t, Monad (t m), Monad m) =>
(Run t -> m (StT t a)) -> t m a
controlT forall a b. (a -> b) -> a -> b
$ \Run t
run -> forall (m :: * -> *) a. MonadLog m => LogLevel -> m a -> m a
localMaxLogLevel LogLevel
level (Run t
run t m a
m)
getLoggerEnv :: t m LoggerEnv
getLoggerEnv = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall (m :: * -> *). MonadLog m => m LoggerEnv
getLoggerEnv
logAttention :: (MonadLog m, ToJSON a) => T.Text -> a -> m ()
logAttention :: forall (m :: * -> *) a. (MonadLog m, ToJSON a) => Text -> a -> m ()
logAttention Text
msg = forall (m :: * -> *).
MonadLog m =>
LogLevel -> Text -> Value -> m ()
logMessage LogLevel
LogAttention Text
msg forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> Value
toJSON
logInfo :: (MonadLog m, ToJSON a) => T.Text -> a -> m ()
logInfo :: forall (m :: * -> *) a. (MonadLog m, ToJSON a) => Text -> a -> m ()
logInfo Text
msg = forall (m :: * -> *).
MonadLog m =>
LogLevel -> Text -> Value -> m ()
logMessage LogLevel
LogInfo Text
msg forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> Value
toJSON
logTrace :: (MonadLog m, ToJSON a) => T.Text -> a -> m ()
logTrace :: forall (m :: * -> *) a. (MonadLog m, ToJSON a) => Text -> a -> m ()
logTrace Text
msg = forall (m :: * -> *).
MonadLog m =>
LogLevel -> Text -> Value -> m ()
logMessage LogLevel
LogTrace Text
msg forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> Value
toJSON
logAttention_ :: MonadLog m => T.Text -> m ()
logAttention_ :: forall (m :: * -> *). MonadLog m => Text -> m ()
logAttention_ = (forall (m :: * -> *) a. (MonadLog m, ToJSON a) => Text -> a -> m ()
`logAttention` Value
emptyObject)
logInfo_ :: MonadLog m => T.Text -> m ()
logInfo_ :: forall (m :: * -> *). MonadLog m => Text -> m ()
logInfo_ = (forall (m :: * -> *) a. (MonadLog m, ToJSON a) => Text -> a -> m ()
`logInfo` Value
emptyObject)
logTrace_ :: MonadLog m => T.Text -> m ()
logTrace_ :: forall (m :: * -> *). MonadLog m => Text -> m ()
logTrace_ = (forall (m :: * -> *) a. (MonadLog m, ToJSON a) => Text -> a -> m ()
`logTrace` Value
emptyObject)