2016-10-20 28 views
2

私のプロジェクトはmain.pyメインスクリプトとaaa.pyモジュールで構成されています。私は、ログファイル名を指定して、main.pyのログパッケージを使ってログプロシージャを設定しました。ロギングパッケージ - メインとモジュール間のログファイルを共有する - python 3

aaa.pyに含まれている関数に同じログファイルを書き込ませる最もクリーンな「正しい」方法はどれですか?

答えて

1

その後ロガーが同じ名前を持っている必要はありません

logger = logging.getLogger(__name__) 

を定義することにより、aaa.pyモジュールロガーを使用

logger = logging.getLogger() 
fh = logging.FileHandler("path/to/file") 
logger.addHandler(fh) 

を定義することにより、main.pyでルートロガーを使用しますモジュールですが、一般的な方法です。サブモジュールロガーは自動的にルートロガーにバブルアップされ、すべてのハンドラに送信されます。

docs

から引用すると、子ロガーは、彼らの祖先ロガーに関連付けられているハンドラにメッセージを伝播します。このため、アプリケーションが使用するすべてのロガーに対してハンドラーを定義して構成する必要はありません。トップレベルのロガーにハンドラーを設定し、必要に応じて子ロガーを作成すれば十分です。

0

あなたは一度に一つだけのPythonスクリプト(main.py)
を呼び出した場合、あなたは一度だけ、あなたのログの設定を定義することができます。 exemple用:
logging.basicConfig(filename=logfilepath, format='%(levelname)s:%(message)s')

、あなたがモジュールに好きな場所exemple
logging.<level>("log_string")

のために、それを呼び出します
関連する問題