log4hs-0.7.0.0: src/Logging/Handler/StreamHandler.hs
{-# 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