在进程完成之前将日志重定向到文件[重复]
Posted
技术标签:
【中文标题】在进程完成之前将日志重定向到文件[重复]【英文标题】:Redirect log to file before process finished [duplicate] 【发布时间】:2016-10-16 01:29:03 【问题描述】:test.py(工作):
import time
_, a, b = [1, 2, 3]
print a
print b
运行代码:python test.py > test.log
您将在 test.log 中获得日志
test.py(不工作):
import time
_, a, b = [1, 2, 3]
print a
print b
while True:
time.sleep(5)
但是这个你在日志中没有。
如何在程序完成之前获取日志,没有 python 日志模块(只使用重定向'>')?
【问题讨论】:
查找“刷新输出”。我将您的问题标记为与另一个问题重复。虽然它说的是“屏幕”而不是文件,但从您的程序的角度来看,它实际上是一回事。import sys; sys.stdout.flush()
第五个答案适用于文件,但在该问题中不被接受。
【参考方案1】:
默认情况下,Python 缓冲区 stdout
,因此日志以块的形式写入磁盘。您可以通过几种不同的方式关闭缓冲,这里有两种。调用脚本时可以使用-u
选项,即:
python -u test.py
你可以使用环境变量PYTHONUNBUFFERED
:
export PYTHONUNBUFFERED=true
python test.py
【讨论】:
以上是关于在进程完成之前将日志重定向到文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章