| import logging |
| import tqdm |
|
|
| class LoggingHandler(logging.Handler): |
| def __init__(self, level=logging.NOTSET): |
| super().__init__(level) |
|
|
| def emit(self, record): |
| try: |
| msg = self.format(record) |
| tqdm.tqdm.write(msg) |
| self.flush() |
| except (KeyboardInterrupt, SystemExit): |
| raise |
| except: |
| self.handleError(record) |
|
|
|
|
| def install_logger( |
| given_logger, level = logging.WARNING, fmt="%(levelname)s:%(name)s:%(message)s" |
| ): |
| """ Configures the given logger; format, logging level, style, etc """ |
| import coloredlogs |
|
|
| def add_notice_log_level(): |
| """ Creates a new 'notice' logging level """ |
| |
| |
| NOTICE_LEVEL_NUM = 25 |
| logging.addLevelName(NOTICE_LEVEL_NUM, "NOTICE") |
|
|
| def notice(self, message, *args, **kws): |
| if self.isEnabledFor(NOTICE_LEVEL_NUM): |
| self._log(NOTICE_LEVEL_NUM, message, args, **kws) |
|
|
| logging.Logger.notice = notice |
|
|
| |
| add_notice_log_level() |
|
|
| |
| |
| field_styles = coloredlogs.DEFAULT_FIELD_STYLES.copy() |
| field_styles["asctime"] = {} |
| level_styles = coloredlogs.DEFAULT_LEVEL_STYLES.copy() |
| level_styles["debug"] = {"color": "white", "faint": True} |
| level_styles["notice"] = {"color": "cyan", "bold": True} |
|
|
| coloredlogs.install( |
| logger=given_logger, |
| level=level, |
| use_chroot=False, |
| fmt=fmt, |
| level_styles=level_styles, |
| field_styles=field_styles, |
| ) |
|
|