django アプリケーションで Python ロギングを使用しています。バックエンド API に接続するクラスは、必要に応じてファイル ハンドラーを使用してこのロガーを初期化します。クラスは、API 呼び出しが行われるたびにインスタンス化されます。追加のハンドラーが毎回追加されないようにしようとしましたが、
lsof | grep my.log
ログ ファイルでハンドラーの量が増加していることを示しており、しばらくすると、この開いているファイルの制限が原因でサーバーに障害が発生します。
self.logger = logging.getLogger("FPA")
try:
if self.logger.handlers[0].__class__.__name__=="FileHandler":
pass
except Exception, e:
print 'new filehandler added'+str(e)
ch = logging.FileHandler(FPA_LOG_TARGET)
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s - %(pathname)s @ line %(lineno)d")
ch.setFormatter(formatter)
self.logger.setLevel(logging.DEBUG)
self.logger.addHandler(ch)
これが最善の方法ではないことは承知していますが、これまでの実装でエラーは見つかりませんでした。