Python 信息级别的日志记录不需要';我不生产任何产品
我使用pythonshell运行了以下内容,并从命令行将其作为Python文件运行。我根本看不到我的日志输出Python 信息级别的日志记录不需要';我不生产任何产品,python,python-3.x,logging,Python,Python 3.x,Logging,我使用pythonshell运行了以下内容,并从命令行将其作为Python文件运行。我根本看不到我的日志输出 import logging formatter = logging.Formatter('%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s') stream_handler = logging.StreamHandler() stream_handler.setLevel(logg
import logging
formatter = logging.Formatter('%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s')
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(formatter)
logger = logging.getLogger()
logger.addHandler(stream_handler)
logger.info(("info logging"))
使用logging.basicConfig()初始化日志记录系统。您的日志记录输出几乎正确,只有一个例外。需要在记录器实例而不是处理程序实例上定义日志记录级别。因此,您的代码只需要非常小的调整即可工作:
import logging
formatter = logging.Formatter(
'%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s'
)
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger = logging.getLogger()
logger.addHandler(stream_handler)
logger.setLevel(logging.INFO)
logger.info("info logging")
这段代码产生以下输出:
2019-08-21 15:04:55,118,118 INFO [testHandler.py:11] info logging
注意,我还删除了
logger.info
调用上的双括号,因为它们不是必需的。您需要设置记录器的级别
logger.setLevel(logging.INFO)
下面的语句可以从代码中删除
stream_handler.setLevel(logging.INFO)
记录器和处理程序可以具有不同的级别。您只设置了处理程序的级别,而没有设置记录器本身
import logging
formatter = logging.Formatter('%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s')
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(formatter)
logger = logging.getLogger()
logger.setLevel(logging.INFO) # Required
logger.addHandler(stream_handler)
logger.info(("info logging"))
这是一个很好的建议,但我需要保持现有的编码风格。