次のようなコマンドラインパラメーターでロギングモジュールをDEBUGに設定した場合:
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
ロガーがDEBUGに設定されているかどうかを後で確認するにはどうすればよいですか? Trueフラグが渡された場合に関数のタイミングを計るデコレーターを作成しています。フラグが指定されていない場合、ルートロガーがDEBUGに設定されている場合、デフォルトでタイミング情報を出力します。
_logging.getLogger().getEffectiveLevel()
_
引数なしのlogging.getLogger()
は、ルートレベルのロガーを取得します。
http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
実際、もっと良い方法があります:コードlogging.getLogger().isEnabledFor(logging.DEBUG)
を使用してください。 getEffectiveLevel()
の結果をどう処理するかを理解しようとしたときに見つけました。
以下は、ロギングモジュール自体が使用するコードです。
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()
ただ
logging.getLogger().level == logging.DEBUG