gpt4 book ai didi

python - 当我在 `log_message()` 中覆盖 `SimpleHTTPRequestHandler` 时,没有任何内容写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:56:55 25 4
gpt4 key购买 nike

我有以下用于网络服务器的代码。我遇到一个问题,httpd.log 中没有打印任何内容 - 我不知道为什么。文件已创建,如果我将 print() 语句添加到 log_message() 中,它会被打印出来,但不会将任何内容写入文件。

from http.server import HTTPServer
from http.server import SimpleHTTPRequestHandler
import logging
from logging.handlers import RotatingFileHandler

class MyHandler(SimpleHTTPRequestHandler):
def __init__(self, *args):
self.logger = logging.getLogger("httpd")
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh = RotatingFileHandler("httpd.log", mode='wa',
maxBytes=1 << 20, backupCount=2)
fh.setFormatter(formatter)
fh.setLevel(logging.INFO)
self.logger.addHandler(fh)
self.logger.info("Creating HTTP Request Handler")
super(SimpleHTTPRequestHandler, self).__init__(*args)

def log_message(self, format, *args):
self.logger.info("%s - - [%s] %s\n" %
(self.address_string(),
self.log_date_time_string(),
format%args))

def main():
server = HTTPServer(('', 80), MyHandler)
server.serve_forever()

if __name__ == '__main__':
main()

这是在 Python 3.1.3 上

最佳答案

一个记录器可以有多个处理程序。不同的处理程序可能具有不同的日志级别。记录器有自己的日志级别,它不受处理程序的影响,并将具有适当日志级别的消息传递给处理程序,以便处理程序根据需要进行处理。

因此,当您的处理程序对 INFO 级别的消息感兴趣时,您的记录器却忽略了它们。

WARNING 的默认日志级别继承自根记录器。

关于python - 当我在 `log_message()` 中覆盖 `SimpleHTTPRequestHandler` 时,没有任何内容写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110506/

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