log-warper-0.2.1: src/System/Wlog/Color.hs
-- |
-- Module : System.Wlog.Color
-- Copyright : (c) Serokell, 2016
-- License : GPL-3 (see the file LICENSE)
-- Maintainer : Serokell <hi@serokell.io>
-- Stability : experimental
-- Portability : POSIX, GHC
--
-- Colorizing utilities for log messages.
-- Messages are colored depending on used serverity.
module System.Wlog.Color
( colorizer
) where
import System.Console.ANSI (Color (Blue, Green, Magenta, Red, Yellow),
ColorIntensity (Vivid), ConsoleLayer (Foreground),
SGR (Reset, SetColor), setSGRCode)
import System.Log.Logger (Priority (DEBUG, ERROR, INFO, NOTICE, WARNING))
-- | Defines pre- and post-printed characters for printing colorized text.
table :: Priority -> (String, String)
table priority = case priority of
ERROR -> (setColor Red , reset)
DEBUG -> (setColor Green , reset)
NOTICE -> (setColor Magenta , reset)
WARNING -> (setColor Yellow , reset)
INFO -> (setColor Blue , reset)
_ -> ("", "")
where
setColor color = setSGRCode [SetColor Foreground Vivid color]
reset = setSGRCode [Reset]
-- | Colorizes text.
colorizer :: Priority -> String -> String
colorizer pr s = before ++ s ++ after
where
(before, after) = table pr