forked from diyhue/diyHue
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogger.py
41 lines (30 loc) · 1.19 KB
/
logger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import logging
import sys
def _get_log_format():
return logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
class Logger:
loggers = {}
logLevel = logging.DEBUG # Capture all logs prior to switching
def configure_logger(self, level):
self.logLevel = getattr(logging, level)
for loggerName in self.loggers:
self.loggers[loggerName].handlers.clear()
self._setup_logger(loggerName)
def _setup_logger(self, name):
logger = logging.getLogger(name)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(_get_log_format())
handler.setLevel(logging.DEBUG)
handler.addFilter(lambda record: record.levelno <= logging.INFO)
logger.addHandler(handler)
handler = logging.StreamHandler(sys.stderr)
handler.setFormatter(_get_log_format())
handler.setLevel(logging.WARNING)
logger.addHandler(handler)
logger.setLevel(self.logLevel)
logger.propagate = False
return logger
def get_logger(self, name):
if name not in self.loggers:
self.loggers[name] = self._setup_logger(name)
return self.loggers[name]