{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE RecordWildCards #-} module Logging.Types.Handlers.StreamHandler ( StreamHandler(..) ) where import Control.Monad (unless) import GHC.Generics import System.IO import Logging.Types.Class import Logging.Types.Filter import Logging.Types.Formatter import Logging.Types.Level -- | A handler type which writes logging records, appropriately formatted, -- to a stream. -- data StreamHandler = StreamHandler { stream :: Handle , level :: Level , filterer :: Filterer , formatter :: Formatter } deriving (Generic, Eq) instance Handler StreamHandler where emit hdl@StreamHandler{..} rcd = do hPutStrLn stream $ format formatter rcd flush hdl flush = hFlush . stream