一尘不染

是否可以根据消息日志级别修改Python的日志记录格式?

python

我正在使用Python的logging机制将输出打印到屏幕上。我可以使用print语句来做到这一点,但是我想允许用户调整更好的粒度以禁用某些类型的输出。我喜欢为错误打印的格式,但是当输出级别为“信息”时,我希望使用更简单的格式。

例如:

  logger.error("Running cmd failed")
  logger.info("Running cmd passed")

在此示例中,我希望以不同的方式打印错误的格式:

# error
Aug 27, 2009 - ERROR: Running cmd failed
# info
Running cmd passed

是否可以在没有多个日志记录对象的情况下针对不同的日志级别使用不同的格式?我宁愿在创建记录器后就不修改它,因为有大量的if /
else语句来确定如何记录输出。


阅读 143

收藏
2021-01-20

共1个答案

一尘不染

是的,您可以通过创建一个自定义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实例附加到您的处理程序。

2021-01-20