datastar-hs-0.1.0.1: src/Hypermedia/Datastar/Logger.hs
module Hypermedia.Datastar.Logger
( DatastarLogger (..)
, nullLogger
, stderrLogger
)
where
import Data.Text (Text)
import Data.Text qualified as T
import System.IO (hPutStrLn, stderr)
data DatastarLogger = DatastarLogger
{ logDebug :: Text -> IO ()
, logInfo :: Text -> IO ()
, logWarn :: Text -> IO ()
, logError :: Text -> IO ()
}
nullLogger :: DatastarLogger
nullLogger =
DatastarLogger
{ logDebug = \_ -> pure ()
, logInfo = \_ -> pure ()
, logWarn = \_ -> pure ()
, logError = \_ -> pure ()
}
stderrLogger :: DatastarLogger
stderrLogger =
DatastarLogger
{ logDebug = logAt "DEBUG"
, logInfo = logAt "INFO"
, logWarn = logAt "WARN"
, logError = logAt "ERROR"
}
where
logAt :: Text -> Text -> IO ()
logAt level msg = hPutStrLn stderr $ T.unpack ("[datastar] [" <> level <> "] " <> msg)