使Python日志记录器除了输出日志文件外,还将所有消息输出到stdout

  • 问题:
  • 有没有一种方法可以让Python日志记录使用logging模块自动地将内容输出到stdout并将其输出到日志文件中?例如,我希望所有调用都指向记录器。警告记录器。关键记录器.错误去他们想要的地方,但除此之外,总是被复制到标准输出。这是为了避免重复以下信息:

    mylogger.critical("something failed")
    print "something failed"

  • 答案:
  • 所有日志输出都由处理程序处理;只需添加一个logging.StreamHandler()到根记录程序

    下面是一个配置流处理程序(使用stdout而不是默认的stderr)并将其添加到根记录器中的示例:

    import logging
    import sys

    root = logging.getLogger()
    root.setLevel(logging.DEBUG)

    handler = logging.StreamHandler(sys.stdout)
    handler.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)
    root.addHandler(handler)