记录,StreamHandler和标准流

记录,StreamHandler和标准流,第1张

记录,StreamHandler和标准流

以下脚本

log1.py

import logging, sysclass SingleLevelFilter(logging.Filter):    def __init__(self, passlevel, reject):        self.passlevel = passlevel        self.reject = reject    def filter(self, record):        if self.reject: return (record.levelno != self.passlevel)        else: return (record.levelno == self.passlevel)h1 = logging.StreamHandler(sys.stdout)f1 = SingleLevelFilter(logging.INFO, False)h1.addFilter(f1)rootLogger = logging.getLogger()rootLogger.addHandler(h1)h2 = logging.StreamHandler(sys.stderr)f2 = SingleLevelFilter(logging.INFO, True)h2.addFilter(f2)rootLogger.addHandler(h2)logger = logging.getLogger("my.logger")logger.setLevel(logging.DEBUG)logger.debug("A DEBUG message")logger.info("An INFO message")logger.warning("A WARNING message")logger.error("An ERROR message")logger.critical("A CRITICAL message")

运行时,产生以下结果。

C: temp> log1.py调试消息INFO消息警告消息错误消息关键信息

正如你所期望的,因为在终端

sys.stdout
,并
sys.stderr
是相同的。现在,让我们将标准输出重定向到文件
tmp

C: temp> log1.py> tmp调试消息警告消息错误消息关键信息

因此,INFO消息没有被打印到终端-但指示消息

sys.stderr
被打印。让我们看一下其中的内容
tmp

C: temp>输入tmpINFO消息

So that approach appears to do what you want.



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5643409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存