【问题标题】:No handlers could be found for logger "__main__"找不到记录器“__main__”的处理程序
【发布时间】:2016-07-24 10:48:30
【问题描述】:

我收到此记录器错误,但我不确定这是如何发生的。我创建了更简单的测试程序并且它们有效。有什么想法可能来自此错误吗?

在 python 2.6 中运行这个程序!

错误:

No handlers could be found for logger "__main__"

代码:

import logging
import subprocess as sp

logger = logging.getLogger(__name__)

def runpig(filename):
    # does not use logger
    ....
    ....
    return

def main():
    try:
        runpig(filename)
    except sp.CalledProcessError as ex:
        logger.error(ex.message)
    except:
        logger.info("Error occured")

if __name__ == "__main__":
    main()

【问题讨论】:

    标签: python logging


    【解决方案1】:

    您要么需要先调用logging.basicConfig,要么只调用logging.info,它会自动调用它。

    if __name__ == "__main__":
        logging.info("Begin")
        main()
    

    应该可以的

    【讨论】:

      【解决方案2】:

      您可以通过这种方式设置特定的处理程序:

      logger = logging.getLogger(__name__)
      handler = logging.StreamHandler()
      formatter = logging.Formatter("%(asctime)s - %(name)s (%(lineno)s) - %(levelname)s: %(message)s", datefmt='%Y.%m.%d %H:%M:%S')
      handler.setFormatter(formatter)
      logger.addHandler(handler)
      

      https://stackoverflow.com/a/26258712/1907997 https://docs.python.org/2/library/logging.html#logging.Logger.addHandler

      或为所有记录器设置基本配置:

      logger = logging.getLogger(__name__)
      logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s (%(lineno)s) - %(levelname)s: %(message)s", datefmt='%Y.%m.%d %H:%M:%S')
      

      https://docs.python.org/2/library/logging.html#logging.basicConfig

      【讨论】:

        猜你喜欢
        • 2015-02-09
        • 2017-10-26
        • 2012-11-11
        • 2011-09-03
        • 2015-04-27
        • 2016-01-05
        • 2018-11-12
        • 1970-01-01
        相关资源
        最近更新 更多