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