我创建了以下脚本。 你们中的任何人能解释一下为什么输出结果是像下面所示的吗?
源代码
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
print('debug', logger.isEnabledFor(logging.DEBUG))
print('info', logger.isEnabledFor(logging.INFO))
print('warning', logger.isEnabledFor(logging.WARNING))
print('error', logger.isEnabledFor(logging.ERROR))
logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
输出
debug True
info True
warning True
error True
warning
error
DEBUG:root:debug
INFO:root:info
WARNING:root:warning
ERROR:root:error
具体来说
这里的
logger.info
和logging.info
有什么区别为什么
logger.isEnabledFor(logging.DEBUG)
是True
,但logger.debug('debug')
没有显示任何内容为什么
logger.info
没有输出,但logging.info
有
logger
行为的看法。您能否再解释一下为什么如果logging.debug
和logger.debug
是相同的东西,那么logging.debug
会起作用呢? - doraemonlogging.debug
时,会调用basicConfig()
,这使它们有所不同。如果在上面的代码之后调用logger.debug('debug')
,则会看到输出DEBUG:root:debug
,然后您将会明白。 - Cheneylogging.log
的任何调用都会使用basicConfig()
来初始化它? - doraemonbasicConfig()
只有在root
没有handler
时才会被调用。 - Cheney