关于python:在进程完成之前将日志重定向到文件

Redirect log to file before process finished

本问题已经有最佳答案,请猛点这里访问。

测试:PY(工作):

1
2
3
4
5
import time

_, a, b = [1, 2, 3]
print a
print b

运行代码:python test.py>test.log

您将获得登录test.log

test.py(不工作):

1
2
3
4
5
6
7
8
import time

_, a, b = [1, 2, 3]
print a
print b

while True:
    time.sleep(5)

但是这个你在日志里一个也没有。

如果没有python日志模块(只使用重定向">"),如何在程序完成之前获取日志?


默认情况下,python缓冲stdout,这样日志就可以成块写入磁盘。您可以通过以下两种方式关闭缓冲。调用脚本时,可以使用-u选项,即:

1
python -u test.py

您可以使用环境变量PYTHONUNBUFFERED

1
2
export PYTHONUNBUFFERED=true
python test.py