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

发布于 2021-01-29 15:09:38

我正在使用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语句来确定如何记录输出。

关注者
0
被浏览
78
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看