ghcup-hs/lib/GHCup/Utils/Logger.hs

29 lines
985 B
Haskell
Raw Normal View History

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