我使用Python3.6编写了一个简单的HTTP服务器来重定向所有请求。
我写的文件可以在here中找到
我可以在Win8.1 CMD和Ubuntu 16.04.3 Bash中看到输出。但是,无论我尝试下面的任何一种方法,它都不起作用,日志无法保存到文件中。
nohup python3 ./filename.py > ./logfile 2>&1 &
python3 ./filename.py > ./logfile 2>&1 &
setsid ./filename.py > ./logfile 2>&1 &
我试着使用:
import sys
logfile = open('logfile.log','w')
sys.stdout = logfile
sys.stdin = logfile
sys.stderr = logfile
它没有起作用。
发布于 2018-09-08 23:08:02
默认情况下,Python的stdout和stderr是缓冲的。正如其他响应者所指出的,如果您的日志文件是空的(假设您的日志记录是正确的),那么输出就没有被刷新。
指向脚本的链接不再有效,但您可以尝试以python3 -u filename.py
或等效的PYTHONUNBUFFERED=x python3 filename.py
身份运行脚本。这会导致stdout和stderr流不被缓冲。
使用标准库的http.server
模块提供当前目录中的文件的完整示例:
PYTHONUNBUFFERED=x python3 -m http.server &> http.server.log & echo $! > http.server.pid
所有输出(stdout & stderr)都被重定向到可以跟踪的http.server.log,并且服务器的进程ID被写入http.server.pid,这样您就可以通过kill $(cat http.server.pid)
杀死该进程。
https://stackoverflow.com/questions/46665484
复制相似问题