Python3 http.server:将日志保存到文件

问题描述:

我使用Python3.6编写一个简单的HTTP服务器来重定向所有请求。Python3 http.server:将日志保存到文件

我写入的文件可以发现here

我可以看到在这两个Win8.1 CMD &的Ubuntu 16.04.3猛砸输出。 但是,无论我尝试以下任何方法,它都不起作用,日志无法保存到文件中。

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 

它没有工作。

+1

你是什么意思的“没有工作”?如果您在服务器运行时尝试读取文件,那么输出可能还没有被刷新 – jonatan

+0

不可以。我的意思是我试图运行它,几个小时后,日志文件仍然是空的。我必须看到像这样的日志> 2017/1/1 GET/- 301。但是,我在日志文件中看不到任何内容。 – PotatoChips

我已经在Ubuntu 16.04上试过了你的代码,它像魅力一样工作。

import sys 
logfile = open('logfile.log','w') 
sys.stdout = logfile 
sys.stdin = logfile 
sys.stderr = logfile 
+0

请参阅此处的截图。可能存在一些依赖关系的不足吗? https://i.loli.net/2017/10/11/59dd7aa56f3ca.jpg – PotatoChips

+0

@PotatoChips你读过nohup的手册页吗? nohup重定向远离终端,因此尝试将剩余的输出(其中没有的输出)放到日志文件中将不会为您提供该日志文件中的任何内容。而在另一种情况下,你的服务器仍在运行,所以它可能没有被刷新。所以不用nohup运行它并关闭它,然后检查输出。如果您需要在服务器运行时读取日志,请确保输出正在刷新。 – jonatan

+0

我试图在没有nohup的情况下运行,几小时后我终止了进程。日志文件仍然是空的。 – PotatoChips