module Effectful.Zoo.Log.Api.LazyText
  ( log,
    trace,
    debug,
    info,
    warn,
    error,
    crit,
  ) where

import Effectful
import Effectful.Dispatch.Dynamic
import Effectful.Zoo.Core
import Effectful.Zoo.Log.Data.Severity
import Effectful.Zoo.Log.Dynamic
import HaskellWorks.Prelude

log :: ()
  => HasCallStack
  => r <: Log LazyText
  => Severity
  -> LazyText
  -> Eff r ()
log :: forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
Severity -> LazyText -> Eff r ()
log Severity
severity LazyText
message =
  (HasCallStack => Eff r ()) -> Eff r ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => Eff r ()) -> Eff r ())
-> (HasCallStack => Eff r ()) -> Eff r ()
forall a b. (a -> b) -> a -> b
$
    Log LazyText (Eff r) () -> Eff r ()
forall (e :: Effect) (es :: [Effect]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send (Severity -> LazyText -> Log LazyText (Eff r) ()
forall i (a :: * -> *). HasCallStack => Severity -> i -> Log i a ()
Log Severity
severity LazyText
message)

trace :: ()
  => HasCallStack
  => r <: Log LazyText
  => LazyText
  -> Eff r ()
trace :: forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
LazyText -> Eff r ()
trace =
  (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ())
-> (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a b. (a -> b) -> a -> b
$
    Severity -> LazyText -> Eff r ()
forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
Severity -> LazyText -> Eff r ()
log Severity
Trace

debug :: ()
  => HasCallStack
  => r <: Log LazyText
  => LazyText
  -> Eff r ()
debug :: forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
LazyText -> Eff r ()
debug =
  (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ())
-> (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a b. (a -> b) -> a -> b
$
    Severity -> LazyText -> Eff r ()
forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
Severity -> LazyText -> Eff r ()
log Severity
Debug

info :: ()
  => HasCallStack
  => r <: Log LazyText
  => LazyText
  -> Eff r ()
info :: forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
LazyText -> Eff r ()
info =
  (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ())
-> (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a b. (a -> b) -> a -> b
$
    Severity -> LazyText -> Eff r ()
forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
Severity -> LazyText -> Eff r ()
log Severity
Info

warn :: ()
  => HasCallStack
  => r <: Log LazyText
  => LazyText
  -> Eff r ()
warn :: forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
LazyText -> Eff r ()
warn =
  (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ())
-> (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a b. (a -> b) -> a -> b
$
    Severity -> LazyText -> Eff r ()
forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
Severity -> LazyText -> Eff r ()
log Severity
Warn

error :: ()
  => HasCallStack
  => r <: Log LazyText
  => LazyText
  -> Eff r ()
error :: forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
LazyText -> Eff r ()
error =
  (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ())
-> (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a b. (a -> b) -> a -> b
$
    Severity -> LazyText -> Eff r ()
forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
Severity -> LazyText -> Eff r ()
log Severity
Error

crit :: ()
  => HasCallStack
  => r <: Log LazyText
  => LazyText
  -> Eff r ()
crit :: forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
LazyText -> Eff r ()
crit =
  (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ())
-> (HasCallStack => LazyText -> Eff r ()) -> LazyText -> Eff r ()
forall a b. (a -> b) -> a -> b
$
    Severity -> LazyText -> Eff r ()
forall (r :: [Effect]).
(HasCallStack, r <: Log LazyText) =>
Severity -> LazyText -> Eff r ()
log Severity
Crit