29

是否有可能将信息或调试的 python 日志消息转到标准输出,将警告或更高级别的消息转到标准错误?

4

2 回答 2

61

这似乎做我想要的:

#!/usr/bin/python
import sys
import logging


class InfoFilter(logging.Filter):
    def filter(self, rec):
        return rec.levelno in (logging.DEBUG, logging.INFO)


logger = logging.getLogger("__name__")
logger.setLevel(logging.DEBUG)

h1 = logging.StreamHandler(sys.stdout)
h1.setLevel(logging.DEBUG)
h1.addFilter(InfoFilter())
h2 = logging.StreamHandler()
h2.setLevel(logging.WARNING)

logger.addHandler(h1)
logger.addHandler(h2)
于 2013-04-17T17:36:07.567 回答
-2

我认为这会有所帮助:Handler.setLevel(lvl)

将此处理程序的阈值设置为 lvl。比 lvl 严重程度低的日志消息将被忽略。创建处理程序时,级别设置为 NOTSET(这会导致处理所有消息)。

但现在我看到它不会做你想要的(从警告/错误中分离信息/调试)

话虽如此,您可以编写自定义处理程序(logging.StreamHandler例如扩展类),并覆盖该Handler.handle()方法。

于 2013-04-17T13:45:43.270 回答