将BaseHTTPServer的stdout重定向到日志

3 投票
1 回答
879 浏览
提问于 2025-04-18 05:12

我用BaseHTTPServer写了一个简单的网页服务器,运行得挺不错的。现在我想加上日志功能,结果发现BaseHTTPServer似乎已经有一些日志信息会输出到标准输出(stdout)上。请问有没有办法把我的日志也包含这些标准输出的信息呢?

也就是说,我希望日志能记录所有来自标准输出的信息。

注意:我并没有明确地在控制台窗口打印任何东西,当有GET请求时,BaseHTTPServer会自动处理并打印这些信息到控制台。

举个例子:

127.0.0.1 - - [02/May/2014 20:51:52] "GET /postTest.html HTTP/1.1" 200 -
127.0.0.1 - - [02/May/2014 20:51:52] "GET /assets/foundation.js HTTP/1.1" 200 -
127.0.0.1 - - [02/May/2014 20:51:52] "GET /assets/bootstrap.css HTTP/1.1" 200 -
127.0.0.1 - - [02/May/2014 20:51:57] "GET /index.html HTTP/1.1" 200 -
127.0.0.1 - - [02/May/2014 20:51:57] "GET /assets/foundation.js HTTP/1.1" 200 -
127.0.0.1 - - [02/May/2014 20:51:57] "GET /assets/bootstrap.css HTTP/1.1" 200 -

1 个回答

2

根据BaseHTTPServer的文档,你可以重写log_message这个方法来实现这个功能。默认情况下,它只是把信息写到错误输出(stderr),但你可以让它写到你的日志记录器里(或者同时写到两个地方)。

撰写回答