首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python3 http.server :将日志保存到文件

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

Stack Overflow用户
提问于 2017-10-10 19:21:48
回答 2查看 3K关注 0票数 2

我使用Python3.6编写了一个简单的HTTP服务器来重定向所有请求。

我写的文件可以在here中找到

我可以在Win8.1 CMD和Ubuntu 16.04.3 Bash中看到输出。但是,无论我尝试下面的任何一种方法,它都不起作用,日志无法保存到文件中。

代码语言:javascript
运行
复制
nohup python3 ./filename.py > ./logfile 2>&1 &
python3 ./filename.py > ./logfile 2>&1 &
setsid ./filename.py > ./logfile 2>&1 &

我试着使用:

代码语言:javascript
运行
复制
import sys
logfile = open('logfile.log','w')
sys.stdout = logfile
sys.stdin = logfile
sys.stderr = logfile

它没有起作用。

EN

Stack Overflow用户

发布于 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)杀死该进程。

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46665484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档