【发布时间】:2011-05-21 07:25:42
【问题描述】:
我使用 python 模块logging 来生成日志文件和控制台打印。
我设置了我的脚本来记录所有错误级别,没有 DEBUG 文件。
但是我在设置控制台打印处理程序时遇到了麻烦。在控制台上我想显示级别INFO 和低于,而不是像setLevel 那样做。有什么方法可以用 inline 代码做到这一点?
【问题讨论】:
我使用 python 模块logging 来生成日志文件和控制台打印。
我设置了我的脚本来记录所有错误级别,没有 DEBUG 文件。
但是我在设置控制台打印处理程序时遇到了麻烦。在控制台上我想显示级别INFO 和低于,而不是像setLevel 那样做。有什么方法可以用 inline 代码做到这一点?
【问题讨论】:
我不确定您所说的“内联代码”究竟是什么意思,但您可以使用过滤器来实现。
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)
【讨论】: