首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >记录器不能显示外部libaries的信息。

记录器不能显示外部libaries的信息。
EN

Stack Overflow用户
提问于 2016-10-06 14:31:56
回答 1查看 1.7K关注 0票数 0

我想要记录器打印信息信息从我的所有代码,但不是从第三方库。这在多个地方都有讨论,但建议的解决方案对我不起作用。这是我对外部库extlib.py的模拟

代码语言:javascript
运行
复制
#!/usr/bin/env python3
from logging import info

def f():
    info("i am extlib f()")

我的模块:

代码语言:javascript
运行
复制
#!/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()

我试图只为本地模块启用信息:

代码语言:javascript
运行
复制
#!/usr/bin/env python3
import logging
from logging import info
import extlib

logging.getLogger(__name__).setLevel(logging.INFO)
info("I am mymodule")
extlib.f()

产出:无

期望产出:

资讯:根:我是我的模组

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 14:34:11

问题是他们没有在外部库中使用记录器类。如果是的话,你就可以过滤掉了。我不确定您是否可以阻止他们记录信息,因为他们使用的是info函数调用。不过,这里有个解决办法。

Suppressing output of module calling outside library

更新:

这是你做伐木的方法

代码语言:javascript
运行
复制
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')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39898754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档