module Control.Log
( message
, value
, error
, runLogger
, runLoggerOff
, MonadLogger
, bs
, lbs
, sanitize
) where
import Prelude hiding (error)
import Data.ByteString (ByteString)
import qualified Data.ByteString.Lazy as BL
import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Logger (runStdoutLoggingT, runNoLoggingT, LoggingT, NoLoggingT, MonadLogger, logInfoNS)
import Data.Monoid ((<>))
import Data.Text (Text, pack, replace)
import Data.Text.Encoding (decodeUtf8)
import qualified Data.Text.Lazy.Encoding as LT
import qualified Data.Text.Lazy as LT
type Section = Text
message :: MonadLogger m => Section -> Text -> m ()
message = logInfoNS
value :: (Show a) => a -> Text
value = pack . show
bs :: ByteString -> Text
bs = decodeUtf8
lbs :: BL.ByteString -> Text
lbs = LT.toStrict . LT.decodeUtf8
sanitize :: Text -> BL.ByteString -> Text
sanitize n h = replace n "xxx" $ lbs h
error :: MonadLogger m => Section -> Text -> m ()
error s t =
message ("ERROR | " <> s) t
runLogger :: MonadIO m => LoggingT m a -> m a
runLogger = runStdoutLoggingT
runLoggerOff :: NoLoggingT m a -> m a
runLoggerOff = runNoLoggingT