python 脚本输出不会定向到文件

python 脚本输出不会定向到文件

我有一个 python 脚本。它有一个SimpleLoggerwith sys.stdoutas output_stream

logger = SimpleLogger(level=LogLevel.DEBUG)

当我在控制台中运行它时,我可以正确获取日志,但是每当我将输出重定向到文件时,在目标中找不到任何内容。

我尝试了多种方法:

  1. python server.py > /tmp/x.log 2>&1
  2. python server.py > /tmp/x.log

在这两种情况下,/tmp/x.log都是空的。

我也试过了nohup python server.py,但是什么也没写nohup.out

答案1

这可能只是由于缓冲所致。仅当积累了足够的输出时,您才会在文件中看到某些内容。您可以尝试使用python -u来请求无缓冲的输出,或将环境变量设置PYTHONUNBUFFERED=为任何非空字符串,如 Python 中所述命令行文档,或者.flush()在每个.debug()或类似的调用之后添加一个调用。

相关内容