我正在使用Python的logging机制将输出打印到屏幕上。我可以使用print语句来做到这一点,但是我想允许用户调整更好的粒度以禁用某些类型的输出。我喜欢为错误打印的格式,但是当输出级别为“信息”时,我希望使用更简单的格式。
logging
例如:
logger.error("Running cmd failed") logger.info("Running cmd passed")
在此示例中,我希望以不同的方式打印错误的格式:
# error Aug 27, 2009 - ERROR: Running cmd failed # info Running cmd passed
是否可以在没有多个日志记录对象的情况下针对不同的日志级别使用不同的格式?我宁愿在创建记录器后就不修改它,因为有大量的if / else语句来确定如何记录输出。
是的,您可以通过创建一个自定义Formatter类来做到这一点:
Formatter
class MyFormatter(logging.Formatter): def format(self, record): #compute s according to record.levelno #for example, by setting self._fmt #according to the levelno, then calling #the superclass to do the actual formatting return s
然后将一个MyFormatter实例附加到您的处理程序。
MyFormatter