为什么拿 vscode 写 py 在调试时用 logging 输出信息时在控制台会出现 stderr 输出重复内容的问题?

2016-07-27 22:54:30 +08:00
 techmoe

这里环境 win10\py3.5\vscode1.3 , vscode 已装那个在推荐列表上高高在上的 py 插件,最近调试 py 时出现了一个很令人强迫症发作的问题
首先是一个再简单不过的使用 logging 输出 debug 信息的代码段

import logging

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s')

logging.debug('wtf?')

然后 F5 跑起来,调试器选的是第一个 python
然后问题出现了

2016-07-27 22:45:49,739 root         DEBUG    wtf?
pyProc.stderr: 2016-07-27 22:45:49,739 root         DEBUG    wtf?

其实我目前来写 py 半年还不到,几经查资料得知stderr 是用来输出标准错误信息的,但是我实在想不通上面已经输出一遍错误信息了为什么下面还会再以 stderr 的身份再输出一遍?有趣的事这段程序在 cmd 下直接 python 运行没有这种问题出现。不知道有没有拿 vscode 写 py 的人遇到过类似的问题?或者还是我哪里理解错了还是配置有问题?这样的问题该怎么解决?求指教

4667 次点击
所在节点    Python
3 条回复
techmoe
2016-07-27 23:13:23 +08:00
solved..
我强制把 logging 的输出流指定为 sys.stdout 就好了。。
如此一来难道说 logging 的默认输出是输出到 stderr 吗?然后 vscode 的那个 python 插件还自作聪明的加 stderr 前缀又显示了一遍
weyou
2016-07-28 00:11:50 +08:00
basicConfig 默认调用的 StreamHandler , StreamHandler 默认输出到 stderr 。
指定 stream 就好了
21grams
2016-07-28 09:57:28 +08:00
pycharm 多好,不用操心这些事

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/295365

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX