Python - 日志记录与级别

0 投票
1 回答
1081 浏览
提问于 2025-04-16 18:04

我在用Python的一个模块logging来生成日志文件和在控制台打印信息。我设置了我的脚本,让它记录所有错误级别的信息,但不包括DEBUG级别的内容,记录到文件里。不过,我在设置控制台打印的部分遇到了一些麻烦。我希望在控制台上显示INFO级别和更低的级别,而不是像setLevel那样显示更高的级别。有没有办法用内联代码来实现这个呢?

1 个回答

4

我不太确定你说的“内联代码”具体指什么,但你可以通过使用过滤器来实现这个功能。

class InfoAndLower(logging.Filter):
    def filter(self, record):
        return record.levelno <= logging.INFO

然后把这个过滤器实例连接到你的控制台处理器上。

h = logging.StreamHandler(sys.stdout)
h.addFilter(InfoAndLower())

在Python 3.2及以后的版本中,你不需要创建一个类,使用一个可调用的对象就可以了:

h.addFilter(lambda record: record.levelno <= logging.INFO)

撰写回答