logging docs没有提到从basicConfig
获得的默认记录器写的内容是:stdout或stderr。
默认行为是什么?
答案 0 :(得分:5)
显然默认值为stderr。
快速检查:使用最小的示例
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
logger.info("test")
并使用python test.py 1> /tmp/log_stdout 2> /tmp/log_stderr
运行它会生成一个空的stdout文件,但会生成一个非空的stderr文件。
答案 1 :(得分:1)
如果没有将filename
参数传递给logging.basicconfig,它将配置StreamHandler
。如果将stream
参数传递给logging.basicconfig
,它将传递给StreamHandler
,否则StreamHandler
默认使用sys.stderr
,如从{{3 }}
类logging.StreamHandler(stream = None)
返回StreamHandler类的新实例。如果指定了stream,实例将使用它来记录输出;否则,实例将使用它来记录输出。否则,将使用sys.stderr。
class StreamHandler(Handler):
"""
A handler class which writes logging records, appropriately formatted,
to a stream. Note that this class does not close the stream, as
sys.stdout or sys.stderr may be used.
"""
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
self.stream = stream