You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python logging如何实现每次写入日志文件时自动flush刷新?

解决方案

方案1:手动显式刷新日志

每次写完日志后主动调用所有日志处理器的flush方法,把缓冲内容强制写入磁盘。该方案改造成本最低,不需要修改原有日志初始化配置。
你只需要在logging.info()代码行后新增以下内容即可:

for handler in logging.root.handlers:
    handler.flush()

方案2:初始化日志时配置行缓冲模式

出现该缓冲现象的原因是系统文件层的缓冲导致的:默认用filename参数初始化日志时,Python调用系统默认参数打开日志文件,Windows系统默认的文件缓冲阈值较大,低频写入场景下就会出现延迟写入的情况。
你可以自行打开日志文件时指定缓冲规则,再传给日志模块使用,一次配置即可实现自动刷新,无需额外调用flush方法,适合长期运行的服务使用。示例代码如下:

import logging

# 打开日志文件时指定行缓冲模式:buffering=1代表每写入一行就自动刷新到磁盘
log_file = open('MyLog.txt', 'a', buffering=1, encoding='utf-8')
# 用stream参数传入自己打开的文件对象,替代原有filename参数
logging.basicConfig(stream=log_file, level=logging.DEBUG)

while True:
    <snip - get the data>
    if newdata == 1 :    
        print ("> ",DataString,sep='')
        logging.info(datettime_string+' '+DataString)

如果需要完全无缓冲模式,可以将buffering参数设为0,注意该配置仅支持二进制模式打开文件,文本格式日志使用行缓冲即可满足实时写入需求。


内容的提问来源于stack exchange,提问作者tim11g

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 11:27:02