Jika saya mengatur modul logging ke DEBUG dengan parameter baris perintah seperti ini:
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
Bagaimana saya nanti bisa tahu jika logger telah diatur ke DEBUG? Saya sedang menulis dekorator yang akan mengatur waktu fungsi jika True flag diteruskan ke sana, dan jika tidak ada flag yang diberikan, defaultnya adalah mencetak informasi waktu ketika root logger diatur ke DEBUG.
Jawaban:
logging.getLogger()
tanpa argumen mendapatkan pencatat tingkat akar.http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
sumber
logging.getLevelName(logging.getLogger().getEffectiveLevel())
. Alangkah baiknya memiliki sintaks yang lebih sederhana ketika yang Anda inginkan hanyalah string untuk level saat ini.Sebenarnya, ada satu yang lebih baik: gunakan kode
logging.getLogger().isEnabledFor(logging.DEBUG)
. Saya menemukannya saat mencoba memahami apa yang harus dilakukan dengan hasilgetEffectiveLevel()
.Di bawah ini adalah kode yang digunakan modul logging itu sendiri.
def getEffectiveLevel(self): """ Get the effective level for this logger. Loop through this logger and its parents in the blogger hierarchy, looking for a non-zero logging level. Return the first one found. """ logger = self while logger: if logger.level: return logger.level logger = logger.parent return NOTSET def isEnabledFor(self, level): """ Is this logger enabled for level ‘level’? """ if self.manager.disable >= level: return 0 return level >= self.getEffectiveLevel()
sumber
Hanya
sumber