{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE RecordWildCards #-}
module Logging.Handler.StreamHandler ( StreamHandler(..) ) where
import Control.Monad (unless)
import GHC.Generics
import System.IO
import Text.Format
import Logging.Class
import Logging.Filter
import Logging.Level
data StreamHandler = StreamHandler { level :: Level
, filterer :: Filterer
, formatter :: Format1
, stream :: Handle
} deriving (Generic, Eq)
instance Handler StreamHandler where
emit hdl@StreamHandler{..} rcd = do
hPutStrLn stream $ format1 formatter rcd
hFlush stream