欢迎访问宙启技术站
智能推送

Python中使用http.server.HTTPServer实现简单的请求日志记录

发布时间:2024-01-09 20:51:39

在Python中,可以使用http.server.HTTPServer来实现简单的请求日志记录。HTTPServer是Python标准库中http.server模块中的一个类,用于创建一个简单的HTTP服务器。

下面是一个使用例子,展示如何使用HTTPServer来记录请求日志:

import http.server
import logging
import datetime

# 创建一个自定义的日志记录类
class RequestLogger(http.server.BaseHTTPRequestHandler):
    def log_message(self, format, *args):
        # 获取当前时间
        current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        # 将日志信息格式化并记录
        logging.info("%s - - [%s] %s
" % (self.address_string(), current_time, format%args))

# 创建一个记录器并设置日志级别
logging.basicConfig(filename='request.log', level=logging.INFO)

# 创建HTTP服务器,并将RequestLogger设置为请求处理程序
httpd = http.server.HTTPServer(('localhost', 8000), RequestLogger)

# 启动服务器
httpd.serve_forever()

在这个例子中,首先定义了一个自定义的RequestLogger类,继承自http.server.BaseHTTPRequestHandler。这个类中重写了log_message方法,用于记录请求日志。在这个方法中,我们使用logging模块将日志信息写入到一个名为request.log的日志文件中。

然后,通过logging.basicConfig方法设置日志记录器的配置,指定要保存日志的文件名以及日志级别。在这个例子中,我们将日志级别设置为INFO,这意味着只有级别为INFO及以上的日志才会被记录。

最后,创建一个HTTPServer实例,指定要监听的地址和端口,并将RequestLogger设置为请求处理程序。通过调用serve_forever方法,启动服务器,开始监听请求。当有请求到达时,HTTPServer会自动创建一个新的RequestLogger实例来处理请求,并调用其log_message方法来记录请求日志。

需要注意的是,上述实现是一个简单的示例,仅用于展示如何使用HTTPServer实现请求日志记录。在实际应用中,可能需要根据实际需求,对RequestLogger进行扩展,以记录更详细的请求信息。

此外,还可以使用第三方库如Flask、Django等来实现更复杂的HTTP服务器,并集成更多的功能,如路由处理、数据存储等。