{-# LANGUAGE TemplateHaskell #-}
module Wire.Sem.Logger
( module Wire.Sem.Logger,
module Wire.Sem.Logger.Level,
)
where
import Imports hiding (log)
import Polysemy
import Wire.Sem.Logger.Level
data Logger msg m a where
Log :: Level -> msg -> Logger msg m ()
makeSem ''Logger
trace :: (Member (Logger msg) r) => msg -> Sem r ()
trace :: forall msg (r :: EffectRow).
Member (Logger msg) r =>
msg -> Sem r ()
trace = Level -> msg -> Sem r ()
forall msg (r :: EffectRow).
Member (Logger msg) r =>
Level -> msg -> Sem r ()
log Level
Trace
debug :: (Member (Logger msg) r) => msg -> Sem r ()
debug :: forall msg (r :: EffectRow).
Member (Logger msg) r =>
msg -> Sem r ()
debug = Level -> msg -> Sem r ()
forall msg (r :: EffectRow).
Member (Logger msg) r =>
Level -> msg -> Sem r ()
log Level
Debug
info :: (Member (Logger msg) r) => msg -> Sem r ()
info :: forall msg (r :: EffectRow).
Member (Logger msg) r =>
msg -> Sem r ()
info = Level -> msg -> Sem r ()
forall msg (r :: EffectRow).
Member (Logger msg) r =>
Level -> msg -> Sem r ()
log Level
Info
warn :: (Member (Logger msg) r) => msg -> Sem r ()
warn :: forall msg (r :: EffectRow).
Member (Logger msg) r =>
msg -> Sem r ()
warn = Level -> msg -> Sem r ()
forall msg (r :: EffectRow).
Member (Logger msg) r =>
Level -> msg -> Sem r ()
log Level
Warn
err :: (Member (Logger msg) r) => msg -> Sem r ()
err :: forall msg (r :: EffectRow).
Member (Logger msg) r =>
msg -> Sem r ()
err = Level -> msg -> Sem r ()
forall msg (r :: EffectRow).
Member (Logger msg) r =>
Level -> msg -> Sem r ()
log Level
Error
fatal :: (Member (Logger msg) r) => msg -> Sem r ()
fatal :: forall msg (r :: EffectRow).
Member (Logger msg) r =>
msg -> Sem r ()
fatal = Level -> msg -> Sem r ()
forall msg (r :: EffectRow).
Member (Logger msg) r =>
Level -> msg -> Sem r ()
log Level
Fatal
mapLogger ::
forall msg msg' r a.
(Member (Logger msg') r) =>
(msg -> msg') ->
Sem (Logger msg ': r) a ->
Sem r a
mapLogger :: forall msg msg' (r :: EffectRow) a.
Member (Logger msg') r =>
(msg -> msg') -> Sem (Logger msg : r) a -> Sem r a
mapLogger msg -> msg'
f = (forall (rInitial :: EffectRow) x.
Logger msg (Sem rInitial) x -> Sem r x)
-> Sem (Logger msg : r) a -> Sem r a
forall (e :: Effect) (r :: EffectRow) a.
FirstOrder e "interpret" =>
(forall (rInitial :: EffectRow) x. e (Sem rInitial) x -> Sem r x)
-> Sem (e : r) a -> Sem r a
interpret ((forall (rInitial :: EffectRow) x.
Logger msg (Sem rInitial) x -> Sem r x)
-> Sem (Logger msg : r) a -> Sem r a)
-> (forall (rInitial :: EffectRow) x.
Logger msg (Sem rInitial) x -> Sem r x)
-> Sem (Logger msg : r) a
-> Sem r a
forall a b. (a -> b) -> a -> b
$ \case
Log Level
lvl msg
msg -> Level -> msg' -> Sem r ()
forall msg (r :: EffectRow).
Member (Logger msg) r =>
Level -> msg -> Sem r ()
log Level
lvl (msg' -> Sem r ()) -> msg' -> Sem r ()
forall a b. (a -> b) -> a -> b
$ msg -> msg'
f msg
msg
discardLogs :: Sem (Logger msg ': r) a -> Sem r a
discardLogs :: forall msg (r :: EffectRow) a. Sem (Logger msg : r) a -> Sem r a
discardLogs = (forall (rInitial :: EffectRow) x.
Logger msg (Sem rInitial) x -> Sem r x)
-> Sem (Logger msg : r) a -> Sem r a
forall (e :: Effect) (r :: EffectRow) a.
FirstOrder e "interpret" =>
(forall (rInitial :: EffectRow) x. e (Sem rInitial) x -> Sem r x)
-> Sem (e : r) a -> Sem r a
interpret ((forall (rInitial :: EffectRow) x.
Logger msg (Sem rInitial) x -> Sem r x)
-> Sem (Logger msg : r) a -> Sem r a)
-> (forall (rInitial :: EffectRow) x.
Logger msg (Sem rInitial) x -> Sem r x)
-> Sem (Logger msg : r) a
-> Sem r a
forall a b. (a -> b) -> a -> b
$ \(Log Level
_ msg
_) -> x -> Sem r x
forall a. a -> Sem r a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()