我同时使用两个Python Shell运行以下命令,并在命令行中将其作为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(logging.INFO)
stream_handler.setFormatter(formatter)
logger = logging.getLogger()
logger.addHandler(stream_handler)
logger.info(("info logging"))
答案 0 :(得分:1)
除setLevel
外,您的日志记录输出几乎都是正确的。需要在记录器实例而不是处理程序实例上定义日志记录级别。因此,您的代码只需要很小的调整就可以工作:
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
通话中的双括号,因为这是不必要的。
答案 1 :(得分:0)
使用logging.basicConfig()初始化日志记录系统。
答案 2 :(得分:0)
您需要设置记录器的级别,
logger.setLevel(logging.INFO)
以下语句可以从您的代码中删除,
stream_handler.setLevel(logging.INFO)
答案 3 :(得分:0)
记录器和处理程序可以具有不同的级别。您只需设置处理程序的级别,而无需设置记录器本身。
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"))