socketio-0.1.1: Web/SocketIO/Types/Log.hs
--------------------------------------------------------------------------------
-- | Data types for logging
{-# LANGUAGE OverloadedStrings #-}
module Web.SocketIO.Types.Log (Log(..), Serializable(..)) where
--------------------------------------------------------------------------------
import System.Console.ANSI
import Web.SocketIO.Types.String
--------------------------------------------------------------------------------
-- | Logger
data Log = Error ByteString
| Warn ByteString
| Info ByteString
| Debug ByteString
deriving (Eq, Show)
instance Serializable Log where
serialize (Error message) = fromString $ " " ++ (paint Red $ "[error] " ++ error (fromByteString message))
serialize (Warn message) = fromString $ " " ++ (paint Yellow $ "[warn] " ++ fromByteString message)
serialize (Info message) = fromString $ " " ++ (paint Cyan $ "[info] " ++ fromByteString message)
serialize (Debug message) = fromString $ " " ++ (paint Black $ "[debug] " ++ fromByteString message)
--------------------------------------------------------------------------------
-- | helper function
paint :: Color -> String -> String
paint color s = setSGRCode [SetColor Foreground Vivid color] ++ s ++ setSGRCode []