{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE RecordWildCards #-} module Logging.Types.Handlers.StreamHandler ( StreamHandler(..) ) where import Control.Monad (unless) import GHC.Generics import System.IO import Text.Format import Logging.Types.Class import Logging.Types.Filter import Logging.Types.Level -- | A handler type which writes logging records, appropriately formatted, -- to a stream. -- 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