gpt4 book ai didi

python3 : logging. basicConfig 将所有内容发送到 stderr?

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:56 24 4
gpt4 key购买 nike

下面是死的简单代码:

import logging
import requests

logging.basicConfig(level=logging.DEBUG)
res = requests.get('https://www.stackoverflow.com')

python ./test.py > foo.txt 一样运行将所有内容发送到 stderr。为什么这不会输出到标准输出?

最佳答案

logging.basicConfig 在没有handler/filename/stream 时使用StreamHandler给定参数,StreamHandler默认为STDERR流:

class StreamHandler(Handler):

def __init__(self, stream=None):
"""
Initialize the handler.

If stream is not specified, sys.stderr is used.
"""
Handler.__init__(self)
if stream is None:
stream = sys.stderr # <- Here
self.stream = stream

要使用 STDOUT,将 sys.stdout 作为 stream 传递:

logging.basicConfig(level=logging.DEBUG, stream=sys.stdout)

现在,正如您目前所做的那样,您可以像这样从 shell 中捕获 STDERR:

python ./test.py  2> foo.txt

因此重定向文件描述符 2(即 STDERR)就可以了。

STDOUT 是文件描述符 1,当您进行裸重定向 > 时,假定为 1>

如果出于某种原因你想使用不同的文件来重定向两个流,你可以这样做:

python ./test.py  >stdout.txt 2>stderr.txt

如果你想将两者重定向到同一个文件:

python ./test.py  >all.txt 2>&1  # POSIX

python ./test.py  &>all.txt  # `bash`-ism (works in other advanced shells as well)

关于python3 : logging. basicConfig 将所有内容发送到 stderr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58718153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com