logger.setLevel(logging.INFO) 不会使 logger.info() 可见
logger.setLevel(logging.INFO) does not make logger.info() visible
我正在 Windows 下开发 Python 3.4.2。就我而言,
import logging
logger = logging.getLogger('logger')
logger.setLevel(logging.INFO)
logger.info('test')
控制台上没有显示任何内容。但是
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger('logger')
logger.info('test')
显示成功
INFO:logger:test
我预计 logger.setLevel(logging.INFO)
将允许与第二个代码片段中相同的打印输出,其中记录器级别由根记录器控制,但事实并非如此。那么问题出在哪里呢?谢谢。
您需要为记录器添加一个处理程序。调用 basicConfig
是一种方法。
有many kinds of Handlers个。 StreamHandler 打印到控制台,但也有 FileHandlers、SocketHandlers 和 SMTPHandlers,例如。如果您不指定任何处理程序,则不会处理记录,也不会发出任何内容。
要添加 StreamHandler(无需调用 basicConfig),您可以使用:
import logging
logger = logging.getLogger('logger')
logger.setLevel(logging.INFO)
console = logging.StreamHandler()
logger.addHandler(console)
logger.info('test')
这会将 StreamHandler 添加到名为 logger
的记录器中。要将处理程序添加到根记录器,请使用
logging.root.addHandler(console)
通过在根记录器上设置处理程序,StreamHandler 可以处理由其他记录器生成的记录,而不仅仅是 logger
。请参阅 the logging flow diagram 了解发生这种情况的图片。
我正在 Windows 下开发 Python 3.4.2。就我而言,
import logging
logger = logging.getLogger('logger')
logger.setLevel(logging.INFO)
logger.info('test')
控制台上没有显示任何内容。但是
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger('logger')
logger.info('test')
显示成功
INFO:logger:test
我预计 logger.setLevel(logging.INFO)
将允许与第二个代码片段中相同的打印输出,其中记录器级别由根记录器控制,但事实并非如此。那么问题出在哪里呢?谢谢。
您需要为记录器添加一个处理程序。调用 basicConfig
是一种方法。
有many kinds of Handlers个。 StreamHandler 打印到控制台,但也有 FileHandlers、SocketHandlers 和 SMTPHandlers,例如。如果您不指定任何处理程序,则不会处理记录,也不会发出任何内容。
要添加 StreamHandler(无需调用 basicConfig),您可以使用:
import logging
logger = logging.getLogger('logger')
logger.setLevel(logging.INFO)
console = logging.StreamHandler()
logger.addHandler(console)
logger.info('test')
这会将 StreamHandler 添加到名为 logger
的记录器中。要将处理程序添加到根记录器,请使用
logging.root.addHandler(console)
通过在根记录器上设置处理程序,StreamHandler 可以处理由其他记录器生成的记录,而不仅仅是 logger
。请参阅 the logging flow diagram 了解发生这种情况的图片。