[解決済み】複数のモジュールでロギングを使用する
質問
私は以下の構造を持つ小さなPythonのプロジェクトを持っています。
Project
-- pkg01
-- test01.py
-- pkg02
-- test02.py
-- logging.conf
私は、stdoutとログファイルにメッセージを出力するために、デフォルトのloggingモジュールを使用する予定です。 logging モジュールを使用するために、いくつかの初期化が必要です。
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('pyApp')
logger.info('testing')
現在、私はメッセージのロギングを開始する前に、すべてのモジュールでこの初期化を実行します。この初期化を一箇所で一度だけ行い、プロジェクト全体のロギングで同じ設定を再利用することは可能でしょうか?
解決方法を教えてください。
ベストプラクティスは、各モジュールで、以下のようにロガーを定義することです。
import logging
logger = logging.getLogger(__name__)
をモジュールの先頭付近で、そしてモジュール内の他のコードで、例えば次のようにします。
logger.debug('My message with %s', 'variable data')
モジュール内でロギングアクティビティを細分化する必要がある場合は、以下のように使用します。
loggerA = logging.getLogger(__name__ + '.A')
loggerB = logging.getLogger(__name__ + '.B')
にログを記録します。
loggerA
と
loggerB
を適宜選択してください。
メインプログラムの中で、例えば、次のようにします。
def main():
"your program code"
if __name__ == '__main__':
import logging.config
logging.config.fileConfig('/path/to/logging.conf')
main()
または
def main():
import logging.config
logging.config.fileConfig('/path/to/logging.conf')
# your program code
if __name__ == '__main__':
main()
参照 こちら は複数のモジュールからログを取得するためのものであり ここで 他のコードからライブラリモジュールとして使用されるコードのためのログ設定用。
更新しました。
呼び出し時
fileConfig()
を指定したい場合があります。
disable_existing_loggers=False
Python 2.6 以降を使用している場合 (
ドキュメント
をご覧ください)。デフォルト値は
True
後方互換性のため、既存のロガーはすべて
fileConfig()
ただし、それらとその祖先の名前が設定に明示されている場合を除きます。この値を
False
の場合、既存のロガーはそのままになります。Python 2.7/Python 3.2 以降を使用している場合は
dictConfig()
よりも優れたAPIです。
fileConfig()
を使用すると、設定をより細かく制御できるようになります。
関連
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Python 入出力と高次代入の基礎知識
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み] ファイルにログを記録し、標準出力に印刷するためのロガー設定
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み] Python Logging - インポートモジュールからのロギングを無効にする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Python 入出力と高次代入の基礎知識
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] logging.getLogger(__name__)を複数のモジュールで使用する方法