{-# 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 -- | A handler type which writes logging records, appropriately formatted, -- to a stream. -- data StreamHandler = StreamHandler { level :: Level , filterer :: Filterer , formatter :: Format1 , stream :: Handle -- ^ Must be writable 'Handle' } deriving (Generic, Eq) instance Handler StreamHandler where emit hdl@StreamHandler{..} rcd = do hPutStrLn stream $ format1 formatter rcd hFlush stream