私の計画は、スクリプトが実行されるたびに、現在の時間を取得して、生成するログファイル用のフォルダーを作成することです。スクリプトの各ステップで、このフォルダーに新しいログファイルが作成されます。
問題は、スクリプトの実行中に同じフォルダーを使用する方法を理解しようとしていることです。現在起こっていることは、ロガーが作成されるたびに現在の時刻を取得し、毎回新しいフォルダーを作成することです。
モジュールは次のようになります。
logger.py
...
CURRENT_TIME = # get current time
LOG_FOLDER = "logs/%s/" % CURRENT_TIME
...
def get_logger(name):
# Create a log file with the given name in the LOG_FOLDER
import logger.py
何が起こるかは、私が再計算するたびCURRENT_TIME
です。これを回避する方法はfrom logger.py import *
、すべてのモジュールに対してコードを1回実行し、それらに同じログフォルダーを持たせることです。
主な問題は、スクリプトが他のPythonスクリプトを呼び出し、新しいプロセスなどを生成することです。これらの新しいプロセスがロガーをインポートするとき、まだインポートしていないため、再生成されCURRENT_TIME
ます。
では、これを修正する良い方法は何ですか?私が考えた解決策の1つは、ロガーにという定数フォルダーを使用させtemp
、メインスクリプトが終了したら、現在の時刻に名前を変更する(または、スクリプトの先頭に現在の時刻を保存する)ことです。例外やエラーが発生してスクリプトが停止した場合のように、このソリューションはあまり好きではありません。temp
その場合、フォルダーはスクリプトの時間になりたいときに残るので、いつ失敗したかがわかります。