使用信息级别记录不会产生任何输出

时间:2019-08-21 18:56:29

标签: python python-3.x logging

我同时使用两个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"))

4 个答案:

答案 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"))