我正在Python 3.5上编写一个简单的HTTP服务器端应用程序,使用logging.handlers.SysLogHandler通过以下方式进行记录:
http_logger = logging.getLogger("HTTPLogger")
log_handler = logging.handlers.SysLogHandler(address="/dev/log")
log_formatter = logging.Formatter("%(module)s[%(process)d]: %(levelname)s: %(message)s")
log_handler.setFormatter(log_formatter)
http_logger.addHandler(log_handler)
http_logger.setLevel(logging.INFO)
当接收到传入的POST请求时,我想打印信息消息,而在我想打印调试消息的代码中,我还想打印一些信息,其中包含如下所示的其他调试信息:
# This class is intended for handling incoming HTTP requests
class RequestHandler(BaseHTTPRequestHandler):
# POST request handler
def do_POST(self):
print("POST request has been received")
http_logger.info("Incoming request: %s" % self.requestline)
self.log_request()
content_len = int(self.headers.get("Content-Length", 0))
if content_len != 0:
http_logger.debug("Content len: %d" % content_len)
else:
http_logger.info("Empty request body")
但是,在第一次http_logger.debug调用之后,http_logger.info对于后续请求没有任何输出到syslog,但是该方法正常工作,并且始终显示“已收到POST请求”消息。
另一件事:如果我在http_logger.debug调用之后以这种方法将日志级别更改为logging.DEBUG或将另一个http_logger.info粘贴到此方法中的任何位置,则一切正常,并且对于每个传入请求,http_logger.info将消息输出到syslog。 / p>
有人可以帮助我解决这个问题吗?