|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import os |
|
import logging |
|
from tqdm.auto import tqdm |
|
|
|
|
|
class TqdmStreamHandler(logging.StreamHandler): |
|
def emit(self, record): |
|
tqdm.write(self.format(record)) |
|
|
|
|
|
def configure_logger(stream_level, log_level, file_path = None): |
|
_stream_level = stream_level.upper() |
|
_log_level = log_level.upper() |
|
_project_level = _log_level |
|
|
|
_formatter = logging.Formatter("[%(asctime)s] %(name)s: [%(levelname)s] %(message)s") |
|
|
|
_stream_handler = TqdmStreamHandler() |
|
_stream_handler.setLevel(_stream_level) |
|
_stream_handler.setFormatter(_formatter) |
|
|
|
if file_path is not None: |
|
os.makedirs(os.path.dirname(file_path), exist_ok=True) |
|
_file_handler = logging.FileHandler(file_path) |
|
_file_handler.setLevel(_log_level) |
|
_file_handler.setFormatter(_formatter) |
|
|
|
_project_logger = logging.getLogger(__name__.split('.')[0]) |
|
_project_logger.setLevel(_project_level) |
|
_project_logger.addHandler(_stream_handler) |
|
if file_path is not None: |
|
_project_logger.addHandler(_file_handler) |
|
|