どのようにモジュールのログインレベルを選択しますか?私は私が働いていた様々なファイルとアプリケーション、 は(ロギングモジュールを理解し、印刷を落としていモジュール内の各ファイルの異なるロギングレベルを設定するにはどうすればよいですか?
)ログと 私の目標は、柔軟性コード(モジュール)のdiferents部からログレベルを切り替える である私はそれを行いますメインエントリポイント関数から:ここで
は私が持っているものです。
APP/PartA/Script1.py
APP/PartA/Script2.py
APP/Other/Tools.py
APP/main.py
まずモジュール:
#/PartA/Script1.py
import logging
from PartA.Script2 import *
logger = logging.getLogger(__name__)
# Logger Always on debug level:
logger.setLevel(logging.DEBUG)
handler1 = logging.StreamHandler()
handler1.setFormatter(logging.Formatter('\n%(levelname)s %(name)s'))
logger.addHandler(handler1)
def add_ten(n)
ten_added = add_five(n) + 5
return ten_added
第二のモジュール:
#/PartA/Script2.py
import logging
logger = logging.getLogger(__name__)
# Logger Always on debug level:
logger.setLevel(logging.DEBUG)
handler2 = logging.StreamHandler()
handler2.setFormatter(logging.Formatter('\n%(levelname)s %(name)s %(funcName)s %(lineno)s \n%(message)s'))
logger.addHandler(handler2)
def add_five(n):
return n + 5
メインエントリポイント:
#main.py
import logging
from PartA.Script1 import *
from PartA.Script2 import *
logger = logging.getLogger(__name__)
# Logger is always on debug mode..
logger.setLevel(logging.DEBUG)
# Mainhandler:
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
# Here i control the logs levels from the other modules:
handler2.setLevel(logging.DEBUG)
handler1.setLevel(logging.ERROR)
厥、私はちょうどメイン関数でハンドラのsetlevelsを変更する必要がありますが、私はそれが非常にニシキヘビあると思ういけないよう、作業すべてのロガーをDEBUGレベルで設定しなければならないのは、常に奇妙に見える 新しい.pyファイルに対してこれを行うための非常に反復的なコード..
別のモジュールで同じロガー名を使用できません。最後にそれを手に入れよう!ありがとうございました!私がmain.pyで1つのハンドラしか使用していない場合は、常にデバッグレベルにする必要があります。次にレベルを変更したり、ハンドラを変更したりします。 – JMcgreen