Python3 http.server : save log to a file

标签 python bash python-3.x stdout

我使用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

没用。

最佳答案

默认情况下,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,可以被tail,服务器的进程ID被写入http.server.pid 以便您可以通过 kill $(cat http.server.pid) 终止进程.

关于Python3 http.server : save log to a file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46665484/

相关文章:

python - 如何打印这个图案?我无法得到消除中间部分的逻辑

python - 时间序列绘制 Pandas 中的不一致

python - scipy 中的等距样条评估

bash 错误 : Integer expression expected

python - "RuntimeError: Found 0 files in subfolders of ".. Pytorch 中的子文件夹错误

linux - awk 计数模式匹配并对它们之后的数字求和

bash - 在 Bash 中,如何找到编号最小的未使用文件描述符?

python-3.x - Pyspark:如何将 spark 数据帧转换为 json 并将其另存为 json 文件?

python - 如何将 float 转换为小数点后 4 位而不进行四舍五入?

python-3.x - 西类牙语分词器