29 lines
979 B
Haskell
29 lines
979 B
Haskell
module GHCup.Logger where
|
|
|
|
|
|
import Control.Monad.Logger
|
|
import System.Console.Pretty
|
|
|
|
import qualified Data.ByteString as B
|
|
|
|
|
|
data LoggerConfig = LoggerConfig {
|
|
lcPrintDebug :: Bool
|
|
, outter :: B.ByteString -> IO ()
|
|
}
|
|
|
|
|
|
myLoggerT :: LoggerConfig -> LoggingT m a -> m a
|
|
myLoggerT LoggerConfig{..} loggingt = runLoggingT loggingt mylogger
|
|
where
|
|
mylogger :: Loc -> LogSource -> LogLevel -> LogStr -> IO ()
|
|
mylogger _ _ level str' = do
|
|
let l = case level of
|
|
LevelDebug -> if lcPrintDebug then toLogStr (style Bold $ color Blue "[ Debug ]") else mempty
|
|
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 " ]"
|
|
let out = fromLogStr (l <> toLogStr " " <> str' <> toLogStr "\n")
|
|
outter out
|