相关疑难解决方法(0)

Python日志记录 - 禁用导入模块的日志记录

我正在使用Python日志记录模块,并且想要禁用由我导入的第三方模块打印的日志消息.例如,我正在使用以下内容:

logger = logging.getLogger()
logger.setLevel(level=logging.DEBUG)
fh = logging.StreamHandler()
fh_formatter = logging.Formatter('%(asctime)s %(levelname)s %(lineno)d:%(filename)s(%(process)d) - %(message)s')
fh.setFormatter(fh_formatter)
logger.addHandler(fh)
Run Code Online (Sandbox Code Playgroud)

这会在我执行logger.debug("我的消息!")时打印出我的调试消息,但它也会打印出我导入的任何模块的调试消息(例如请求和许多其他事情).

我想只看到我感兴趣的模块的日志消息.是否可以使日志模块执行此操作?

理想情况下,我希望能够告诉记录器从"ModuleX,ModuleY"打印消息并忽略所有其他消息.

我查看了以下内容,但我不想在每次调用导入函数之前禁用/启用日志记录: logging - 如何忽略导入的模块日志?

python logging

61
推荐指数
8
解决办法
3万
查看次数

如何在Python中重定向stderr?

我想记录Python脚本的所有输出.我试过了:

import sys

log = []

class writer(object):
    def write(self, data):
        log.append(data)

sys.stdout = writer()
sys.stderr = writer()
Run Code Online (Sandbox Code Playgroud)

现在,如果我"打印'某些东西'"它就会被记录下来.但是,如果我做了一些语法错误,比如说"打印'某些东西#",它就不会被记录 - 它将进入控制台.

我如何捕获Python解释器中的错误?

我看到了一个可能的解决方案:

http://www.velocityreviews.com/forums/showpost.php?p=1868822&postcount=3

但第二个例子登录到/ dev/null - 这不是我想要的.我想将它记录到像我上面的例子或StringIO这样的列表中......

另外,我最好不要创建子进程(并在单独的线程中读取它的stdout和stderr).

python redirect stderr

19
推荐指数
6
解决办法
5万
查看次数

标签 统计

python ×2

logging ×1

redirect ×1

stderr ×1