]> gitweb.michael.orlitzky.com - dead/htsn.git/blob - src/Logging.hs
Add scaffolding to allow logging via syslog or a file.
[dead/htsn.git] / src / Logging.hs
1 module Logging (
2 init_logging,
3 log_debug,
4 log_error,
5 log_info,
6 log_warning )
7 where
8
9 import System.Log.Handler.Simple ( GenericHandler )
10 import System.Log.Logger (
11 Priority ( DEBUG, INFO ),
12 debugM,
13 errorM,
14 infoM,
15 rootLoggerName,
16 setHandlers,
17 setLevel,
18 updateGlobalLogger,
19 warningM )
20
21 log_debug :: String -> IO ()
22 log_debug = debugM rootLoggerName
23
24 log_error :: String -> IO ()
25 log_error = errorM rootLoggerName
26
27 log_info :: String -> IO ()
28 log_info = infoM rootLoggerName
29
30 log_warning :: String -> IO ()
31 log_warning = warningM rootLoggerName
32
33 init_logging :: Bool -> IO ()
34 init_logging use_syslog = do
35 let max_level = if use_syslog then INFO else DEBUG
36 -- We need to specify the type here; otherwise, setHandlers won't
37 -- accept the empty list as an instance of [LogHandler a].
38 let no_handlers = [] :: [GenericHandler a]
39 -- Removes the default "echo to stdout" handler.
40 updateGlobalLogger rootLoggerName (setLevel max_level
41 . setHandlers no_handlers)