Revision 0c28bee1 htools/Ganeti/Logging.hs
b/htools/Ganeti/Logging.hs | ||
---|---|---|
89 | 89 |
return [setFormatter handler fmt] |
90 | 90 |
|
91 | 91 |
-- | Sets up the logging configuration. |
92 |
setupLogging :: String -- ^ Log file |
|
92 |
setupLogging :: Maybe String -- ^ Log file
|
|
93 | 93 |
-> String -- ^ Program name |
94 | 94 |
-> Bool -- ^ Debug level |
95 | 95 |
-> Bool -- ^ Log to stderr |
... | ... | |
98 | 98 |
-> IO () |
99 | 99 |
setupLogging logf program debug stderr_logging console syslog = do |
100 | 100 |
let level = if debug then DEBUG else INFO |
101 |
destf = if console then C.devConsole else logf |
|
101 |
destf = if console then Just C.devConsole else logf
|
|
102 | 102 |
fmt = logFormatter program False False |
103 |
file_logging = syslog /= SyslogOnly |
|
103 | 104 |
|
104 | 105 |
updateGlobalLogger rootLoggerName (setLevel level) |
105 | 106 |
|
106 | 107 |
stderr_handlers <- openFormattedHandler stderr_logging fmt $ |
107 | 108 |
streamHandler stderr level |
108 | 109 |
|
109 |
file_handlers <- openFormattedHandler (syslog /= SyslogOnly) fmt $ |
|
110 |
fileHandler destf level |
|
110 |
file_handlers <- case destf of |
|
111 |
Nothing -> return [] |
|
112 |
Just path -> openFormattedHandler file_logging fmt $ |
|
113 |
fileHandler path level |
|
111 | 114 |
|
112 | 115 |
let handlers = concat [file_handlers, stderr_handlers] |
113 | 116 |
updateGlobalLogger rootLoggerName $ setHandlers handlers |
Also available in: Unified diff