私は多くの異なるモジュールからなるアプリケーションを持っていますが、すべてが依然として単一のアプリケーションの一部です。どのようにしてロガーを適切に共有すれば、すべてが同じファイルに書き込まれるのですか?私はロガーを回す必要がありますか?私はこれをする必要はありません。大きなアプリケーションでロガーを共有するにはどうすればよいですか?
例プロジェクトのレイアウト:ある
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
file_log = logging.FileHandler('logs/%s.log' % (file_name), 'a', encoding='UTF-8')
file_log.setLevel(file_level)
formatter = logging.Formatter('%(asctime)s - %(levelname)-8s - %(name)-12s - %(message)s')
file_log.setFormatter(formatter)
logger.addHandler(file_log)
が続いfunctions_group1
でlogger
を使用することができ、functions_group1
、functions_group3
:私はそうのようなmain_application.py
でloggerを定義できるようにしたい
/
__init__.py
main_application.py
functions_group1.py
functions_group2.py
functions_group3.py
main_application
にインポートしました:
import functions_group1
import functions_group2
import functions_group3
これらの各ファイル(同様の機能によってグループ化)機能のリストだけを持っている
functions_group1
def function1_dothing():
# Want to log in here!
return ...
def function1_dothing2():
# Want to log in here!
return ...
def function1_dothing3():
# Want to log in here!
return ...
どのように私はアプリケーション全体logger
を共有することができますか?
https://docs.python.org/3/howto/logging.htmlを読んだことはありますか? – jonrsharpe
@jonrsharpeのどの部分をお勧めしますか?私はロガーを作成する方法を知っています。ロガーオブジェクトをどこにでも渡すことなくアプリケーション全体で共有する方法はわかりません。 – Loggy
*「1つのロガーを共有する」*必要はありません。各部は '__name__'のロガーを作成しますが、モジュールの最上位にあるログ(ファイルへの書き込みなど)の処理を設定することができます。 – jonrsharpe