我正在用 Python3 编写一个大型硬件仿真库。对于日志记录,我使用 Python3 Logging 模块。
为了控制具有方法级别粒度的调试消息,我学会了“在街上”(好的,在 StackOverflow 上)在我想要记录的每个方法中创建子记录器:
sub_logger = logging.getChild("new_sublogger_name")
sub_logger.setLevel(logging.DEBUG)
# Sample debug message
sub_logger.debug("This is a debug message...")
通过更改对 setLevel() 的调用,用户可以基于每个方法启用/禁用调试消息。
现在Boss Man不喜欢这种方法。他提倡单点,在该点上,可以使用相同的方法级粒度启用/禁用库中的所有日志消息。(这是通过编写我们自己的 Python 日志库 BTW 来完成的)。
不想重新发明日志轮,我建议继续使用 Python Logging 库,而是使用过滤器来允许对日志消息进行单点控制。
没有经常使用 Python 日志过滤器,对于这个应用程序使用过滤器和 Sublogger.setLevel() 是否有共识?每种方法的优缺点是什么?
在使用了一段时间后,我已经习惯了 setLevel() ,但这可能会影响我的客观性。但是,我不希望浪费每个人的时间来编写另一个 Python 日志库。