我正在使用Python 3.6.4。我首先遇到一个logger.setLevel(logging.INFO)被忽略的问题,遇到了这个答案,这使我感到困惑,并引发了这个问题。
根据以下代码,
1.为什么
logging.info('2')要在代码段2中打印而不是在代码段1中打印?(不是logging.info()模块级别的功能吗?为什么命名记录器会影响此调用?)2.为什么
logger.info('3')要打印,但不打印logger.info('1')?
>>> import logging
>>> logger = logging.getLogger('foo') # named logger
>>> logger.setLevel(logging.INFO)
>>> logger.info('1')
>>> logging.info('2') # prints nothing
>>> logger.info('3')
INFO:foo:3
Run Code Online (Sandbox Code Playgroud)
>>> import logging
>>> logger = logging.getLogger() # no name
>>> logger.setLevel(logging.INFO)
>>> logger.info('1')
>>> logging.info('2') # printed
INFO:root:2
>>> logger.info('3')
INFO:root:3
Run Code Online (Sandbox Code Playgroud) 我有以下完整的 python (3.8.5) 代码示例
import logging
L = logging.getLogger(__name__)
def main():
L.setLevel(logging.DEBUG)
L.warning("This is warn")
L.info("This is info")
L.debug("This is debug")
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
它应该打印出所有三个短语,但只打印第一个短语(用于警告)。
如何规避这个错误?