第一次logging.debug调用后python logging.info没有输出到syslog

时间:2018-07-06 10:20:09

标签: python python-3.x logging syslog

我正在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>

有人可以帮助我解决这个问题吗?

0 个答案:

没有答案