-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlog.py
43 lines (35 loc) · 1.23 KB
/
log.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
42
import logging
import logging.handlers
import sys
class LogConfigurator(object):
def __init__(self, level, logfile=None):
self._level = self._get_log_level(level)
self._logfile = logfile
if logfile is None:
self._basic_config()
else:
self._rotating_config()
def _rotating_config(self):
'''Rotating log'''
handler = logging.handlers.TimedRotatingFileHandler(self._logfile, when='W0', interval=1)
handler.setLevel(self._level)
formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s')
handler.setFormatter(formatter)
logging.root.setLevel(self._level)
logging.root.addHandler(handler)
def _basic_config(self):
'''Log to stdout. Mainly for development.'''
kw = {
'format': '[%(asctime)s] [%(levelname)s] %(message)s',
'datefmt': '%m/%d/%Y %H:%M:%S',
'level': self._level,
'stream': sys.stdout
}
logging.basicConfig(**kw)
def _get_log_level(self, level):
if level == 'debug':
return logging.DEBUG
elif level == 'info':
return logging.INFO
else:
return logging.WARNING