Aşağıdaki yapıya sahip küçük bir python projem var -
Project
-- pkg01
-- test01.py
-- pkg02
-- test02.py
-- logging.conf
Mesajları stdout'a ve bir günlük dosyasına yazdırmak için varsayılan günlük modülünü kullanmayı planlıyorum. Günlük modülünü kullanmak için bir miktar başlatma gerekir -
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('pyApp')
logger.info('testing')
Şu anda, iletileri günlüğe kaydetmeye başlamadan önce her modülde bu başlatmayı gerçekleştiriyorum. Bu başlatmayı, aynı ayarların proje üzerinde oturum açarak yeniden kullanılması için tek bir yerde yalnızca bir kez yapmak mümkün müdür?
package/__init__.py
. Normalde bu if __name__ == '__main__'
kodu koyduğunuz yer değil . Ayrıca, prost örneği, içe aktarma sırasında koşulsuz olarak yapılandırma kodunu çağıracak gibi görünüyor, bu da bana doğru görünmüyor. Genellikle, yapılandırma yapılandırma kodu tek bir yerde yapılmalıdır ve __main__ dosyasını içe aktarmanız dışında içe aktarmanın bir yan etkisi olarak gerçekleşmemelidir.
if __name__ == '__main__'
? (bu durumda söz konusu olduğu açıkça belirtilmemiştir)
fileConfig
hepsindeif __name__ == '__main__'
mantık yoksa, günlük kaydı yapan her modülü aramak zorunda değilsiniz . Prost'un yanıtı, paket bir kütüphane ise iyi bir uygulama değildir, ancak sizin için işe yarayabilir - bir tanesi eklemek yerine kütüphane paketlerindeki günlük kaydını yapılandırmamalıdırNullHandler
.