如果日志记录设置为INFO,则跳过调试指令(及其内容)

时间:2016-10-12 13:22:46

标签: python logging

我有一个程序,我在其中编写日志作为信息和调试。

由于调试包含对慢速函数的调用,即使我将调试设置为INFO,我的程序也运行缓慢。

是否可以从计算中完全跳过这些行?

在下一个示例中,必须在执行信息日志之前传递10秒。

import logging.handlers
import sys
import time

logger = logging.getLogger()
logger.setLevel(logging.INFO)
logging_stream_handler = logging.StreamHandler(sys.stdout)
logging_stream_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s --- %(message)s'))
logger.addHandler(logging_stream_handler)

logger.debug("aaa", time.sleep(10))
logger.debug("bbb")
logger.info("ccc")

2 个答案:

答案 0 :(得分:1)

您可以使用isEnabledFor方法检查记录器是否已启用此类级别:

if logger.isEnabledFor(logging.DEBUG):
    logger.debug("aaa", time.sleep(10))
    logger.debug("bbb")

答案 1 :(得分:0)

您不应该在调试命令中记录。如果必须,那么为了跳过它,您必须分支您的代码。

import logging.handlers
import sys
import time

logger = logging.getLogger()
logger.setLevel(logging.INFO)
logging_stream_handler = logging.StreamHandler(sys.stdout)
logging_stream_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s --- %(message)s'))
logger.addHandler(logging_stream_handler)

if logger.isEnabledFor(logging.DEBUG):
    logger.debug("aaa", time.sleep(10))
    logger.debug("bbb")
logger.info("ccc")