imm-1.3.0.0: src/lib/Imm/Logger.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
-- | Logger module.
module Imm.Logger where
-- {{{ Imports
import Imm.Prelude
import Imm.Pretty
-- }}}
-- * Types
data LogLevel = Debug | Info | Warning | Error
deriving(Eq, Ord, Read, Show)
instance Pretty LogLevel where
pretty Debug = "DEBUG"
pretty Info = "INFO"
pretty Warning = "WARNING"
pretty Error = "ERROR"
-- | Monad capable of logging pretty text.
class Monad m => MonadLog m where
log :: LogLevel -> Doc AnsiStyle -> m ()
getLogLevel :: m LogLevel
setLogLevel :: LogLevel -> m ()
setColorizeLogs :: Bool -> m ()
flushLogs :: m ()
-- * Helpers
logDebug, logInfo, logWarning, logError :: MonadLog m => Doc AnsiStyle -> m ()
logDebug = log Debug
logInfo = log Info
logWarning = log Warning
logError = log Error