Spaces:
Running
on
Zero
Running
on
Zero
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 |