2011-03-14 27 views
4

私は自分のシンプルなロガークラスを作成しました。このクラスでは、COM相互運用機能を使用して企業標準のロガーにリダイレクトされます。スクリプトの先頭近くにロガーインスタンスを作成し、このロガーを使用してスクリプト内のすべてのモジュールが一元的にログに記録されるようにしたいと考えています。Pythonスクリプトでモジュール間でロガーインスタンスを共有する方法は何ですか?

ログに記録する必要があるすべてのクラスのコンストラクタにloggerパラメータを特に追加せずに、このロガーインスタンスをすべてのモジュール間で共有するための慣用方法がありますか?

グローバル変数またはシングルトンを使用するか、モジュール間でロガーを共有する別の推奨方法がありますか?

答えて

5

なぜPython標準ロギングを使用せず、会社標準のロギングシステムとインターフェースするためのハンドラを作成しないのですか? Pythonロギングは、コードのレイヤー間でロガーインスタンスを渡す必要がないように特別に設計されています.Pythonロガーは本質的にシングルトンです。

stdlibロギングのハンドラも非常に書きやすいです。サードパーティハンドラの例はたくさんあります。

開示:私は、Pythonの標準ライブラリロギングパッケージのメンテナです。

+0

私が見ることができるチュートリアルや基本的な例がありますか? –

+2

この関連する回答を見ることができます:http://stackoverflow.com/questions/4722745/logging-between-classes-in-python/4723380#4723380 –

1

私はPythonモジュールがすでにシングルトンであるため、クラスの代わりにモジュールを使用します。

いくつかのアプローチhere

関連する問題