python3 http.server 日志记录如何

Ste*_*ton 6 http python-3.x

我使用以下命令在当前目录中创建了一个简单的文件 HTTP 服务器

python3 -m http.server 8000
Run Code Online (Sandbox Code Playgroud)

这对于下载该目录中的文件非常有效。日志输出定向到终端窗口——我假设是 stdout 或 stderr

我想通过将日志写入指定文件来记录通过该服务器的活动。

我努力了

python3 -m http.server 8000 > log.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

但这会产生一个空的log.txt.

我究竟做错了什么?是否有执行此操作的标准方法,或者我是否必须对该http.server类进行子类化?类似的事情?

Tel*_*per 7

查看了文档,您可以使用:

python3 -u -m http.server 8000 2> log.txt
Run Code Online (Sandbox Code Playgroud)

该参数-u将使stdoutstderr不被缓冲并且将被实时写入。

  • 完美的。我还想将它作为 systemd 服务运行一天左右。为此,我将“[Service] Environment=PYTHONUNBUFFERED=1”添加到服务文件中,并将输出发送到 systemd 日志和服务“status”输出。 (2认同)