我想要记录器打印信息信息从我的所有代码,但不是从第三方库。这在多个地方都有讨论,但建议的解决方案对我不起作用。这是我对外部库extlib.py
的模拟
#!/usr/bin/env python3
from logging import info
def f():
info("i am extlib f()")
我的模块:
#!/usr/bin/env python3
import logging
from logging import info
import extlib
logging.basicConfig(level=logging.INFO)
info("I am mymodule")
extlib.f()
输出:
资讯:根:我是我的模组 信息:root:我是extlib f()
我试图只为本地模块启用信息:
#!/usr/bin/env python3
import logging
from logging import info
import extlib
logging.getLogger(__name__).setLevel(logging.INFO)
info("I am mymodule")
extlib.f()
产出:无
期望产出:
资讯:根:我是我的模组
我做错了什么?
发布于 2016-10-06 14:34:11
问题是他们没有在外部库中使用记录器类。如果是的话,你就可以过滤掉了。我不确定您是否可以阻止他们记录信息,因为他们使用的是info
函数调用。不过,这里有个解决办法。
Suppressing output of module calling outside library
更新:
这是你做伐木的方法
import logging
# create logger
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# add formatter to ch
ch.setFormatter(formatter)
# add ch to logger
logger.addHandler(ch)
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
https://stackoverflow.com/questions/39898754
复制相似问题