2020-03-03 00:59:19 +00:00
|
|
|
module GHCup.Utils.Logger where
|
2020-02-28 23:33:32 +00:00
|
|
|
|
|
|
|
|
|
|
|
import Control.Monad.Logger
|
2020-03-01 00:05:02 +00:00
|
|
|
import System.Console.Pretty
|
2020-02-28 23:33:32 +00:00
|
|
|
|
|
|
|
import qualified Data.ByteString as B
|
|
|
|
|
|
|
|
|
2020-03-01 00:05:02 +00:00
|
|
|
data LoggerConfig = LoggerConfig {
|
|
|
|
lcPrintDebug :: Bool
|
|
|
|
, outter :: B.ByteString -> IO ()
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
myLoggerT :: LoggerConfig -> LoggingT m a -> m a
|
|
|
|
myLoggerT LoggerConfig{..} loggingt = runLoggingT loggingt mylogger
|
2020-02-28 23:33:32 +00:00
|
|
|
where
|
|
|
|
mylogger :: Loc -> LogSource -> LogLevel -> LogStr -> IO ()
|
2020-02-29 23:07:39 +00:00
|
|
|
mylogger _ _ level str' = do
|
2020-02-28 23:33:32 +00:00
|
|
|
let l = case level of
|
2020-03-01 00:05:02 +00:00
|
|
|
LevelDebug -> if lcPrintDebug then toLogStr (style Bold $ color Blue "[ Debug ]") else mempty
|
2020-02-28 23:33:32 +00:00
|
|
|
LevelInfo -> toLogStr (style Bold $ color Green "[ Info ]")
|
|
|
|
LevelWarn -> toLogStr (style Bold $ color Yellow "[ Warn ]")
|
|
|
|
LevelError -> toLogStr (style Bold $ color Red "[ Error ]")
|
|
|
|
LevelOther t -> toLogStr "[ " <> toLogStr t <> toLogStr " ]"
|
2020-02-29 23:07:39 +00:00
|
|
|
let out = fromLogStr (l <> toLogStr " " <> str' <> toLogStr "\n")
|
2020-02-28 23:33:32 +00:00
|
|
|
outter out
|