Logger uygulaması zaten bir singleton'dur.
Logging.getLogger ('someLogger') öğesine yapılan birden çok çağrı, aynı günlükçü nesnesine bir başvuru döndürür. Bu sadece aynı modül içinde değil, aynı Python yorumlayıcı sürecinde olduğu sürece modüller için de geçerlidir. Aynı nesneye yapılan göndermeler için doğrudur; ek olarak, uygulama kodu bir modülde bir ana kaydediciyi tanımlayabilir ve yapılandırabilir ve ayrı bir modülde bir çocuk kaydedici oluşturabilir (ancak yapılandırmaz) ve çocuğa yapılan tüm günlükçü çağrıları üst öğeye aktarılır. İşte bir ana modül
Kaynak - Birden çok modülde günlük kaydı kullanma
Öyleyse bundan yararlanmanız gereken yol -
Ana modülde 'main_logger' adında bir kaydedici oluşturduğumuzu ve yapılandırdığımızı varsayalım (bu, basitçe kaydediciyi yapılandırır, hiçbir şey döndürmez).
# get the logger instance
logger = logging.getLogger("main_logger")
# configuration follows
...
Şimdi bir alt modülde, 'main_logger.sub_module_logger' adlandırma hiyerarşisini izleyen bir çocuk günlükçü oluşturursak , onu alt modülde yapılandırmamız gerekmez. Adlandırma hiyerarşisini takip eden kaydedicinin oluşturulması yeterlidir.
# get the logger instance
logger = logging.getLogger("main_logger.sub_module_logger")
# no configuration needed
# it inherits the configuration from the parent logger
...
Ve aynı zamanda yinelenen işleyici eklemeyecektir.
Biraz daha ayrıntılı yanıt için bu soruya bakın .