【发布时间】:2010-10-27 03:44:01
【问题描述】:
我正在使用 Logging (import logging) 来记录消息。
在 1 个单一模块中,我在调试级别 my_logger.debug('msg') 记录消息;
其中一些调试消息来自function_a(),其他来自function_b();我希望能够根据它们是来自 a 还是来自 b 来启用/禁用日志记录;
我猜我必须使用 Logging 的过滤机制。
有人可以告诉我如何检测下面的代码来执行我想要的操作吗?
import logging
logger = logging.getLogger( "module_name" )
def function_a( ... ):
logger.debug( "a message" )
def function_b( ... ):
logger.debug( "another message" )
if __name__ == "__main__":
logging.basicConfig( stream=sys.stderr, level=logging.DEBUG )
#don't want function_a()'s noise -> ....
#somehow filter-out function_a's logging
function_a()
#don't want function_b()'s noise -> ....
#somehow filter-out function_b's logging
function_b()
如果我将这个简单的示例扩展到更多模块和每个模块的更多功能,我会担心很多记录器;
我可以将每个模块减少到 1 个记录器吗?请注意,日志消息是“结构化的”,即如果记录它的函数正在执行一些解析工作,它们都包含前缀logger.debug("parsing: xxx") - 我可以用一行代码以某种方式关闭所有“解析”消息(不管发出消息的模块/函数是什么?)
【问题讨论】: