mlwong's picture
Add logger
d718096
raw
history blame contribute delete
No virus
1.14 kB
import logging
import inspect
import sys
from pathlib import Path
log_format = "[%(asctime)-12s-%(levelname)s] (%(name)s) %(message)s"
def get_logger(logger_name: str = None, log_level: str = 'info') -> logging.Logger:
# Set up levels
log_levels = logging._nameToLevel
log_level = log_levels[log_level.upper()]
# Set up logger format
logger_name = logger_name or Path(inspect.getmodule(inspect.stack()[1][0]).__file__).name
logger = logging.getLogger(logger_name.rstrip('.py'))
logger.setLevel(log_level)
formatter = logging.Formatter(fmt = log_format)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(formatter)
# Set up exception hook
if logger_name == 'main':
def exception_hook(*args):
gettrace = getattr(sys, 'gettrace', None)
if not gettrace():
logger.error('Uncaught exception:')
logger.exception(args[-1], exc_info=args)
sys.excepthook = exception_hook
# Add handler to logger
logger.addHandler(handler)
logger.info(f"Created {logger = }")
return logger