2009-12-31 11 views
55

Böyle bir komut satırı parametresi ile hata ayıklama günlüğü modülünü ayarlarsanız: logger DEBUG ayarlı iseKök kaydedicinin Python'da DEBUG seviyesine ayarlanıp ayarlanmadığını belirleme

if (opt["log"] == "debug"): 
    logging.basicConfig(level=logging.DEBUG) 

nasıl sonradan anlarım? Doğru bayrağa iletilirse 'un bir işlevi zamanlayacağı bir dekoratör yazıyorum ve herhangi bir işaret verilmediyse, kök günlüğü DEBUG olarak ayarlandığında yazdırma zamanlaması için varsayılanıdır. argümanları olmadan

+0

["time_functions"] (başka bir seçeneğe göre Doğru/Yanlış olarak varsayılan olabilirsiniz). –

cevap

69
logging.getLogger().getEffectiveLevel() 

logging.getLogger() kök düzeyi logger alır.

http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel

+0

Mükemmel, teşekkürler! Ben böyle bir şey (getLogger için açık "kök" geçirerek hariç) yapıyordum, ama ben logger hata ayıklamak için ayarlanmadan önce dekoratörüm __init__ işlevinde yapıyordum: \ –

+1

Eğer seviye adını istiyorsanız, değil sayıyı, sayıyı bir dizgeye ('INFO' gibi) dönüştürmek için kullanabilirsiniz: logging.getLevelName() – guettli

57

Aslında daha iyi bir tane var: kodunu logging.getLogger().isEnabledFor(logging.DEBUG) kullanın. getEffectiveLevel() sonucuyla ne yapacağını anlamaya çalışırken buldum. :-)

(Aşağıda günlük modülü kendisi kullanan kod bir görüntü.) Sonunda böyle devre dışı bırakma olarak yerine günlükçüsüne bu bağlanması belirli bir şey, kullanmak isteyeceğiniz

logging code

+0

Bu, daha düşük çalışma zamanı karmaşıklığıyla aynı şeyi yaptığı için kabul edilen yanıt olmalıdır. – AndyJost

İlgili konular