Товарищи! Мне нужно в коде на Питоне в стратегических местах расставить отладочные print'ы, однако, которые можно было бы выключить простой установкой глобальной переменной ну или еще каким удобным образом + бонусом, чтобы у принтов на разные значения вроде ошибки или успешного выполнения были бы разные префиксы.
Нашел logger, пока написал вот чего, но уже очень оно большое и несуразное, нет ли способа попроще?
class CritFilter(logging.Filter):
def filter(self, rec):
return rec.levelno == logging.CRITICAL
class WarnFilter(logging.Filter):
def filter(self, rec):
return rec.levelno == logging.WARNING
class InfoFilter(logging.Filter):
def filter(self, rec):
return rec.levelno == logging.INFO
class DebugFilter(logging.Filter):
def filter(self, rec):
return rec.levelno == logging.DEBUG
log = logging.getLogger() # root
log.setLevel(logging.DEBUG)
hdlr_crit = logging.StreamHandler()
hdlr_crit.setLevel(logging.CRITICAL)
hdlr_crit.setFormatter(logging.Formatter("*** ERROR: %(message)s"))
hdlr_crit.addFilter(CritFilter())
log.addHandler(hdlr_crit)
hdlr_warn = logging.StreamHandler()
hdlr_warn.setLevel(logging.WARNING)
hdlr_warn.setFormatter(logging.Formatter(">!* %(message)s"))
hdlr_warn.addFilter(WarnFilter())
log.addHandler(hdlr_warn)
hdlr_info = logging.StreamHandler()
hdlr_info.setLevel(logging.INFO)
hdlr_info.setFormatter(logging.Formatter("> + %(message)s"))
hdlr_info.addFilter(InfoFilter())
log.addHandler(hdlr_info)
hdlr_debug = logging.StreamHandler()
hdlr_debug.setLevel(logging.DEBUG)
hdlr_debug.setFormatter(logging.Formatter("> %(message)s"))
hdlr_debug.addFilter(DebugFilter())
log.addHandler(hdlr_debug)
log.critical("We are under attack!")
log.warning("More wood is needed.")
log.info("Unable to comply.")
log.debug("Unit ready.")
# yields:
#*** ERROR: We are under attack!
#>!* More wood is needed.
#> + Unable to comply.
#> Unit ready.