python - 如何同时从多个 python 线程正确写入日志文件?
问题描述
我有多个线程正在运行,每个线程都会将一些内容写入同一个日志文件。我怎么能这样做?
我目前的解决方案是open("log.txt", 'a').write("something\n")
,但我不知道是否有太多打开的连接最终会失败或导致混乱的输出,例如
something
sosomethingmething
或类似的。有没有更好的办法?
解决方案
出于日志记录的目的,您可以使用日志记录模块。日志模块是线程安全的,将为您处理锁定。
https://docs.python.org/3/howto/logging.html
您甚至可以添加%(threadName)s
格式logging.Logger
,这样您就会知道哪个线程将给定的行写入日志文件。MWE 遵循:
import logging
logger = logging.getLogger()
formatter = logging.Formatter('%(asctime)s - %(threadName)s - %(name)s - %(levelname)s - %(message)s')
stderrHandler = logging.StreamHandler() # Will output to STDERR.
stderrHandler.setFormatter(formatter)
推荐阅读
- algorithm - 算法大 O 表示法的时间复杂度
- npm - vsts-npm-auth 存在代码 1,输入不是有效的 Base-64 字符串
- javascript - React Router/createContext hook,JWT 的先有鸡还是先有蛋的情况
- python - 找到平衡的样本数量
- twilio - 如果应用程序在本地运行,则在出站呼叫时在 StatusCallback 中设置什么
- laravel - Vuejs无限循环
- arrays - Google Sheets IF条件检查一列中的多个值是否存在于另一列中
- r - 如何将点添加到数字 - YYYYMM 到 YYYY.MM
- android - Flutter:如何让容器适合它的孩子
- python - 将 rugarch R 库导入 python