log4hs-0.6.0.0: src/Logging/Types/Manager.hs
{-# LANGUAGE RecordWildCards #-}
module Logging.Types.Manager
( Manager(..)
, initialize
, terminate
) where
import Data.List (nub)
import Data.Map.Lazy (Map, elems)
import Logging.Types.Class.Handler
import Logging.Types.Sink
-- |There is __under normal circumstances__ just one Manager,
-- which holds the hierarchy of sinks.
data Manager = Manager { root :: Sink
, sinks :: Map String Sink
, disabled :: Bool
, catchUncaughtException :: Bool
}
-- | Initialize a 'Manager', open all its handlers.
initialize :: Manager -> IO ()
initialize Manager{..} = mapM_ open $
nub $ concat [ handlers | Sink{..} <- (root : (elems sinks)) ]
-- | Terminate a 'Manager', close all its handlers.
terminate :: Manager -> IO ()
terminate Manager{..} = mapM_ close $
nub $ concat [ handlers | Sink{..} <- (root : (elems sinks)) ]