Python日志-如何刷新每次写入日志文件?
对的回答意味着每次写入都会刷新Python日志 我在Windows10上使用Python3.8.1的经验是,存在一些缓冲 我已经基于Python日志-如何刷新每次写入日志文件?,python,logging,Python,Logging,对的回答意味着每次写入都会刷新Python日志 我在Windows10上使用Python3.8.1的经验是,存在一些缓冲 我已经基于 导入日志 logging.basicConfig(filename='MyLog.txt',level=logging.DEBUG) 尽管如此: 如果newdata==1: 打印(“>”,数据字符串,sep='') logging.info(datettime_字符串+''+数据字符串) 新数据每隔几分钟出现一次,打印并记录一行文本。 当我观察控制台输出并将其与
导入日志
logging.basicConfig(filename='MyLog.txt',level=logging.DEBUG)
尽管如此:
如果newdata==1:
打印(“>”,数据字符串,sep='')
logging.info(datettime_字符串+''+数据字符串)
新数据每隔几分钟出现一次,打印并记录一行文本。
当我观察控制台输出并将其与日志文件进行比较时,我看到日志文件更新之前有一个明显的延迟(几次数据更新)。
有没有一种方法可以将日志文件设置为unbuffered,或者显式刷新日志文件?另一个问题清楚地表明它刷新Python流。如果它不工作,这似乎是操作系统的问题。你是如何检查日志文件的,可能问题就在那里。我正在使用记事本++监视日志文件。它有一个机制(文件统计自动检测)来重新加载更改的文件。当应用程序获得焦点时,它会立即重新加载已更改的文件。我已经确认了你的设置。我在Windows 10下运行,使用记事本++。@Jeremy-The
print(“>”,DataString,sep='')
语句正在工作,并在数据可用的确切时刻打印数据。只有logging.info
延迟。如果newdata==1
不起作用,那么print
语句也不会执行。
import logging
<snip - other setup>
logging.basicConfig(filename='MyLog.txt', level=logging.DEBUG)
while True:
<snip - get the data>
if newdata == 1 :
print ("> ",DataString,sep='')
logging.info(datettime_string+' '+DataString)