gpt4 book ai didi

python - 如何覆盖 BaseHTTPRequestHandler log_message() 方法以记录到文件而不是控制台 (sys.stderr)?

转载 作者:太空狗 更新时间:2023-10-29 21:29:13 24 4
gpt4 key购买 nike

我正在使用 BaseHTTPServer.HTTPServer 创建 Web 服务

我想将以下内容记录到文件而不是控制台。但我还没有设法找到这样做的方法。

10.23.23.19 - - [29/Nov/2013 08:39:06] "GET / HTTP/1.1" 200 -
10.23.23.19 - - [29/Nov/2013 08:39:06] "POST / HTTP/1.1" 200 -
10.24.20.14 - - [29/Nov/2013 08:39:27] "POST / HTTP/1.1" 200 -
10.24.20.14 - - [29/Nov/2013 08:39:31] "POST / HTTP/1.1" 200 -

我的代码如下所示:

from BaseHTTPServer import HTTPServer
from pysimplesoap.server import SoapDispatcher, SOAPHandler
.
# The rest of the code
.
.
httpd = HTTPServer(("", 8059),SOAPHandler)
httpd.dispatcher = dispatcher
httpd.serve_forever()

我正在使用 Python 2.6

最佳答案

如果您阅读 BaseHTTPRequestHandler 的文档或源代码,您会发现所有日志记录都通过 BaseHTTPRequestHandler.log_message(),文档字符串明确指定:

Log an arbitrary message.

This is used by all other logging functions. Override it if you have specific logging wishes.

所以解决方案显然是单独保留 .send_response()(显然您希望发送您的响应),并将 .log_message() 替换为调用到一个合适的记录器(cf http://docs.python.org/2/library/logging.html),这是在 Python 中处理日志记录的干净而灵活的方式,或者如果你只是想快速破解一个文件系统文件。

关于python - 如何覆盖 BaseHTTPRequestHandler log_message() 方法以记录到文件而不是控制台 (sys.stderr)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20281709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com