packages feed

mischief-ecs-0.1.0.0: src/Mischief/ECS/Log.hs

module Mischief.ECS.Log where

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

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

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

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

err :: (HasCallStack) => (MonadSystem w m) => Text -> m ()
err msg = withFrozenCallStack $ do
  world <- unsafeGetWorld
  liftIO $ Colog.usingLoggerT world.logger $ Colog.logError msg

panic :: (HasCallStack) => (MonadSystem w m) => Text -> m ()
panic msg = withFrozenCallStack $ do
  err msg
  undefined

text :: (Show a) => a -> Text
text = Text.pack . show