无法找到与记录器“__main__”相对应的处理程序。

7

我遇到了这个记录器错误,不确定是如何发生的。我创建了更简单的测试程序,它们能够正常运行。你认为这个错误可能来自何处?

在 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()
2个回答

9
要么你需要先调用 logging.basicConfig,要么直接调用 logging.info,后者会自动调用前者。
if __name__ == "__main__":
    logging.info("Begin")
    main()

那应该可以工作


3
您可以通过以下方式为特定的设置处理程序:
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://dev59.com/zGw15IYBdhLWcg3wO5OX#26258712 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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接