-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlog.py
32 lines (29 loc) · 1004 Bytes
/
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
import sys
import threading
from logging import Logger, StreamHandler, getLogger
from json_log_formatter import VerboseJSONFormatter
from useful.logs.exception_hooks import (
except_logging,
threading_except_logging,
unraisable_logging,
)
def get_logger(name: str = None) -> Logger:
"""Use this to log inside application modules."""
if not sys.excepthook is except_logging:
# hook root logger
logger = getLogger()
logger.setLevel("INFO")
logger.handlers
log_handlers = [
StreamHandler(sys.stdout),
]
for handler in log_handlers:
handler.setFormatter(VerboseJSONFormatter())
handler.setLevel("INFO")
# hook exception handlers
logger.handlers = log_handlers
sys.excepthook = except_logging
sys.unraisablehook = unraisable_logging
if sys.version_info >= (3, 8, 0):
threading.excepthook = threading_except_logging
return getLogger(name)