-- | -- Module : System.Wlog.Color -- Copyright : (c) Serokell, 2016 -- License : GPL-3 (see the file LICENSE) -- Maintainer : Serokell -- 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