-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathlogging_config.py
74 lines (62 loc) · 2.16 KB
/
logging_config.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import logging, datetime, sys, json, traceback
from logging.handlers import TimedRotatingFileHandler
import os
class ErrorFilter(object):
def __init__(self):
self.__level = logging.ERROR
def filter(self, logRecord):
return logRecord.levelno == self.__level
def log_uncaught_exceptions(ex_type, value, tb):
logger = logging.getLogger("")
logger.error(
f"Uncaught exception: type {str(ex_type)}, value {str(value)}")
logger.error(''.join(traceback.format_exception(ex_type, value, tb)))
sys.__excepthook__(ex_type, value, tb)
def configure(config):
logger = logging.getLogger('')
log_root = config["logging"]["log_dir"]
os.makedirs(log_root, exist_ok=True)
config_root_logger()
config_root_file_logger(logger, log_root)
config_error_logger(logger, log_root)
def config_root_logger():
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
sys.excepthook = log_uncaught_exceptions
def config_root_file_logger(logger, log_root):
fh = TimedRotatingFileHandler(
log_root + '/lnchat.log',
utc=True,
when="D",
atTime=datetime.time(11, 00))
fh.suffix = "%Y%m%d"
fh.setLevel(logging.DEBUG)
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
def config_error_logger(logger, log_root):
eh = TimedRotatingFileHandler(
log_root + '/error.log',
utc=True,
when="D",
atTime=datetime.time(11, 00))
eh.suffix = "%Y%m%d"
eh.setLevel(logging.ERROR)
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s')
eh.setFormatter(formatter)
eh.addFilter(ErrorFilter())
logger.addHandler(eh)
def config_query_logger(log_root):
query_logger = logging.getLogger("query_logger")
fh = TimedRotatingFileHandler(
log_root + '/query.log',
utc=True,
when="D",
atTime=datetime.time(11, 00))
fh.suffix = "%Y%m%d"
fh.setLevel(logging.DEBUG)
query_logger.addHandler(fh)
return query_logger