log4hs-0.8.0.0: src/Logging/Manager.hs
{-# LANGUAGE RecordWildCards #-}
module Logging.Manager
( Manager(..)
, initialize
, terminate
) where
import Data.List (nub)
import Data.Map.Lazy (Map, elems)
import Data.Time.LocalTime
import Logging.Class.Handler
import Logging.Sink
-- |Logging 'Manager' which holds the hierarchy of sinks and other settings.
--
-- Since v0.7.0, the 'TimeZone' of the logging environment can be configurable.
data Manager = Manager { root :: Sink
, sinks :: Map String Sink
, timezone :: TimeZone -- ^ @since 0.7.0
, disabled :: Bool
, catchUncaughtException :: Bool
-- ^ Since 0.8.0, unhandled
-- 'Exception's are logged only in the global
-- logging environment.
}
{-# DEPRECATED catchUncaughtException "Will be removed" #-}
-- | 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)) ]