我正在使用logging.config.dictConfig()设置使用FileHandlerRotatingFileHandler登录文件。多次调用dictConfig()是不好的做法吗?如果可以,为什么?

最佳答案

我认为这个问题比仅仅两次调用一个方法更广泛。

1)多次调用dictConfig是不好的做法吗? - 不它不是。只要您了解会发生什么,就可以愉快地使用它。

2)在某些情况下,是否可以将其视为不良做法或导致意想不到的结果? - 是肯定的。

如果检查 dictConfig 的源代码,您将找不到可能损害运行代码的任何内容。所有配置都包装在一个锁中,因此调用方法是安全的。

但是,您应该知道_handle_existing_loggers中的现有记录器会发生什么。
默认情况下,所有现有记录器都将被禁用,这很重要,请再次阅读,禁用,而不是移除。它们仍然存在,但不再起作用,例如,它们可能阻止消息传播到父记录器。 (更多阅读here,实际代码:python source)

您可以使用此Gist测试记录器会发生什么情况(尽管我不同意要点描述)。

总体而言,我的建议是-尝试一次配置所有记录器。在某些情况下,您需要即时添加记录器,这还不错,只需确保您知道会发生什么,或者如果您想扩展记录器配置,只需将False作为disable_existing_loggers参数即可。

欢呼声和安全编码!

09-08 01:58