| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
|
|
| 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) |
|
|