31 lines
752 B
Haskell
31 lines
752 B
Haskell
module Client.Log where
|
|
|
|
import Control.Monad (when)
|
|
|
|
import Control.Monad.RWS (asks, MonadIO (liftIO))
|
|
|
|
import Debug.Trace (traceIO)
|
|
|
|
-- internal imports
|
|
|
|
import Client.Types (Game, LogLevel, ReaderContainer(rcLogLevel))
|
|
|
|
-- | Print a log line
|
|
logPrint
|
|
:: LogLevel -- ^ Desired log level of message
|
|
-> String -- ^ The message
|
|
-> Game ()
|
|
logPrint level msg = do
|
|
curLevel <- asks rcLogLevel
|
|
when (level <= curLevel) $
|
|
liftIO $ traceIO $ show level <> ": " <> msg
|
|
|
|
-- | Print a log line
|
|
logPrintIO
|
|
:: LogLevel -- ^ Current log level
|
|
-> LogLevel -- ^ Desired log level of message
|
|
-> String -- ^ The message
|
|
-> IO ()
|
|
logPrintIO curLevel level msg = do
|
|
when (level <= curLevel) $
|
|
liftIO $ traceIO $ show level <> ": " <> msg
|