]> gitweb.michael.orlitzky.com - dead/htsn.git/blob - src/Logging.hs
Attempt to implement syslog logging; fail at least with metalog.
[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 ( fileHandler )
10 import System.Log.Handler.Syslog (
11 Facility ( USER ),
12 Option ( PID ),
13 openlog )
14 import System.Log.Logger (
15 Priority ( DEBUG, INFO ),
16 debugM,
17 errorM,
18 infoM,
19 rootLoggerName,
20 setHandlers,
21 setLevel,
22 updateGlobalLogger,
23 warningM )
24
25 log_debug :: String -> IO ()
26 log_debug = debugM rootLoggerName
27
28 log_error :: String -> IO ()
29 log_error = errorM rootLoggerName
30
31 log_info :: String -> IO ()
32 log_info = infoM rootLoggerName
33
34 log_warning :: String -> IO ()
35 log_warning = warningM rootLoggerName
36
37 init_logging :: FilePath -> Priority -> Bool -> IO ()
38 init_logging log_file log_level syslog
39 | syslog == True = do
40 handler <- openlog rootLoggerName [PID] USER level
41 updateGlobalLogger rootLoggerName (setLevel level . setHandlers [handler])
42 | otherwise = do
43 handler <- fileHandler log_file level
44 updateGlobalLogger rootLoggerName (setLevel level . setHandlers [handler])
45 where
46 min_level = if syslog then INFO else DEBUG
47 level = if log_level < min_level then min_level else log_level