Python中使用BaseHTTPServer.BaseHTTPRequestHandler记录访问日志
发布时间:2024-01-16 05:32:32
在Python中,可以使用BaseHTTPServer.BaseHTTPRequestHandler模块来记录访问日志。BaseHTTPRequestHandler是Python标准库中用于处理HTTP请求的基类,可以通过继承并重写其中的方法来实现自定义的HTTP服务器。
下面是一个使用BaseHTTPRequestHandler记录访问日志的示例代码:
from BaseHTTPServer import BaseHTTPRequestHandler
class MyHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
# 处理GET请求
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write("Hello, World!")
# 记录访问日志
log = self.client_address[0] + " - - [" + self.log_date_time_string() + "] \"" + self.requestline + "\" 200"
print(log)
if __name__ == "__main__":
from BaseHTTPServer import HTTPServer
server_address = ("", 8000)
httpd = HTTPServer(server_address, MyHTTPRequestHandler)
print("Starting server on port 8000...")
httpd.serve_forever()
在上述代码中,我们继承了BaseHTTPRequestHandler类,并重写了其中的do_GET方法来处理GET请求。在处理完成GET请求后,我们在do_GET方法中添加了记录访问日志的代码。
self.client_address[0]可以获取到客户端的IP地址,self.log_date_time_string()可以获取到当前时间,self.requestline可以获取到客户端的请求行。我们将这些信息拼接成一个日志字符串,并打印在控制台。
通过运行上述代码,启动一个HTTP服务器,在客户端通过浏览器访问http://localhost:8000时,会返回一个"Hello, World!"的响应,并在控制台输出访问日志。
这只是一个简单的示例,实际应用中,可以将访问日志写入文件或存储到数据库中,也可以对日志进行格式化输出等操作。
