有没有一种方法可以使使用logging模块的Python日志(log)自动将stdoutin addition中的内容输出到它们应该放到的日志(log)文件中?例如,我希望所有打到logger.warninglogger.criticallogger.error的呼叫都转到它们想要的地方,但另外总是要复制到stdout.这是为了避免重复消息,如:

mylogger.critical("something failed")
print "something failed"

推荐答案

所有日志(log)输出都由处理程序处理;只需在根记录器中添加一个logging.StreamHandler().

下面是一个配置流处理程序(使用stdout而不是默认的stderr)并将其添加到根记录器的示例:

import logging
import sys

root = logging.getLogger()
root.setLevel(logging.DEBUG)

handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
root.addHandler(handler)

Python相关问答推荐

如何将ctyles.POINTER(ctyles.c_float)转换为int?

时间序列分解

PywinAuto在Windows 11上引发了Memory错误,但在Windows 10上未引发

Julia CSV for Python中的等效性Pandas index_col参数

使用密钥字典重新配置嵌套字典密钥名

在含噪声的3D点网格中识别4连通点模式

将JSON对象转换为Dataframe

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

为什么在FastAPI中创建与数据库的连接时需要使用生成器?

通过追加列表以极向聚合

如果包含特定值,则筛选Groupby

pandas fill和bfill基于另一列中的条件

Python—在嵌套列表中添加相同索引的元素,然后计算平均值

如何反转一个框架中列的值?

为什么后跟inplace方法的`.rename(Columns={';b';:';b';},Copy=False)`没有更新原始数据帧?

删除Dataframe中的第一个空白行并重新索引列

为什么在Python中00是一个有效的整数?

Polars定制函数返回多列

如果服务器设置为不侦听创建,则QWebSocket客户端不连接到QWebSocketServer;如果服务器稍后开始侦听,则不连接

如何在python tkinter中绑定键盘上的另一个回车?