使用Python编写CGI脚本时如何实现日志记录
发布时间:2024-01-02 12:13:24
在Python中,可以使用内置的logging模块来实现日志记录。该模块提供了一个灵活的API,可以将日志记录到控制台、文件或其他位置。
首先,需要导入logging模块,并配置日志记录器:
import logging
# 创建日志记录器
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG) # 设置日志级别
# 创建文件处理器
file_handler = logging.FileHandler('log.txt')
file_handler.setLevel(logging.DEBUG)
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
# 创建日志格式器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)
# 将处理器添加到记录器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
上述代码创建了一个名为"mylogger"的日志记录器,并将日志级别设置为"DEBUG"。此外,创建了一个写入日志文件的文件处理器和一个将日志输出到控制台的控制台处理器。还创建了一个日志格式器来定义日志记录的格式。
接下来,可以在CGI脚本中使用该日志记录器,例如:
import logging
import cgi
# 获取请求参数
form = cgi.FieldStorage()
name = form.getvalue('name')
# 记录日志
logger = logging.getLogger('mylogger')
if name:
logger.info('Received a request with name: %s', name)
else:
logger.warning('No name parameter in the request')
# 输出响应
print('Content-Type: text/plain')
print()
print('Hello, {}'.format(name))
在上述示例中,首先导入logging模块和cgi模块。然后使用cgi模块获取请求参数。接着,获取之前创建的日志记录器,并根据请求参数记录相应的日志。最后,输出响应结果。
注意,日志记录器的名称需要与之前创建的日志记录器名称相同,才能正确记录日志。
当运行该CGI脚本时,日志会同时输出到日志文件和控制台。可以根据需要,调整日志级别、日志格式和日志输出位置。
总结起来,通过Python的logging模块,可以方便地实现CGI脚本的日志记录功能。通过配置日志记录器、处理器和格式器,可以灵活地控制日志的级别、输出位置和格式,以满足不同的需求。
