对Python强制执行无根记录器策略
我从事一个开源项目,在该项目中,我们允许所有模块登录根日志记录器:对Python强制执行无根记录器策略,python,logging,Python,Logging,我从事一个开源项目,在该项目中,我们允许所有模块登录根日志记录器: import logging def my_function(): logging.info('Logging something on the root- logger') 我们正在使用每模块记录器,如下所示: import logging _LOGGER = logging.getLogger(__name__) def my_function(): _LOGGER.info('Logging somet
import logging
def my_function():
logging.info('Logging something on the root- logger')
我们正在使用每模块记录器,如下所示:
import logging
_LOGGER = logging.getLogger(__name__)
def my_function():
_LOGGER.info('Logging something on the root- logger')
有没有办法通过Linter/静态检查来强制执行此策略,以便其他人不会登录根日志记录器?如果要查找发生这种情况的所有情况,静态检查肯定不可能做到这一点。您所能达到的最佳效果基本上是在源代码中查找字符串
日志记录。[info | debug |…]
。静态检查器很容易被这样的东西愚弄:
logger_name = 'root' # might even read this from a config file
_LOGGER = logging.getLogger(logger_name) # static check has no way to know here that we get the root logger
_LOGGER.info('logging this to root')
除此之外,如果在模块级记录器上没有将
propagate
设置为false,那么它们仍然会将其日志传播到根记录器。很公平。我觉得这不太可能,但值得一试。谢谢