module Mischief.ECS.Log where

import Colog qualified
import Control.Monad.IO.Class
import Data.Text (Text)
import GHC.Stack
import Mischief.ECS.World

debug :: (HasCallStack) => (MonadSystem w m) => Text -> m ()
debug :: forall w (m :: * -> *).
(HasCallStack, MonadSystem w m) =>
Text -> m ()
debug Text
msg = (HasCallStack => m ()) -> m ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => m ()) -> m ()) -> (HasCallStack => m ()) -> m ()
forall a b. (a -> b) -> a -> b
$ do
  world <- m World
forall w (m :: * -> *). MonadSystem w m => m World
unsafeGetWorld
  liftIO $ Colog.usingLoggerT world.logger $ Colog.logDebug msg

info :: (HasCallStack) => (MonadSystem w m) => Text -> m ()
info :: forall w (m :: * -> *).
(HasCallStack, MonadSystem w m) =>
Text -> m ()
info Text
msg = (HasCallStack => m ()) -> m ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => m ()) -> m ()) -> (HasCallStack => m ()) -> m ()
forall a b. (a -> b) -> a -> b
$ do
  world <- m World
forall w (m :: * -> *). MonadSystem w m => m World
unsafeGetWorld
  liftIO $ Colog.usingLoggerT world.logger $ Colog.logInfo msg

warn :: (HasCallStack) => (MonadSystem w m) => Text -> m ()
warn :: forall w (m :: * -> *).
(HasCallStack, MonadSystem w m) =>
Text -> m ()
warn Text
msg = (HasCallStack => m ()) -> m ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => m ()) -> m ()) -> (HasCallStack => m ()) -> m ()
forall a b. (a -> b) -> a -> b
$ do
  world <- m World
forall w (m :: * -> *). MonadSystem w m => m World
unsafeGetWorld
  liftIO $ Colog.usingLoggerT world.logger $ Colog.logWarning msg

err :: (HasCallStack) => (MonadSystem w m) => Text -> m ()
err :: forall w (m :: * -> *).
(HasCallStack, MonadSystem w m) =>
Text -> m ()
err Text
msg = (HasCallStack => m ()) -> m ()
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack ((HasCallStack => m ()) -> m ()) -> (HasCallStack => m ()) -> m ()
forall a b. (a -> b) -> a -> b
$ do
  world <- m World
forall w (m :: * -> *). MonadSystem w m => m World
unsafeGetWorld
  liftIO $ Colog.usingLoggerT world.loggerErr $ Colog.logError msg