ConcurrentLogHandlerを使用してPythonアプリケーションログメッセージをファイルに記録しています。 TornadoのHTTPServerはサーバーとして本番環境で使用されています。特定の条件(ユーザーフォーム送信)では、ファイルのロールオーバーを強制したいと思います。 私が抱えている問題は、logger.handlers [0] .doRollover()を実行するとロールオーバーが発生せず、エラーも表示されません。私のアプリPython ConcurrentLogHandler:Tornado HttpServerを使用するときにロールオーバーを強制します。
多くのモジュールがログに書き込むには、以下のモジュールから「ロガー」オブジェクトをインポートします。
import logging
import logging.handlers
from cloghandler import ConcurrentRotatingFileHandler
from my_app import app
logger = logging.getLogger('my_app')
hdlr = ConcurrentRotatingFileHandler(app.config['LOG_PATH'], maxBytes=5e+8, backupCount=10)
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
[logger.handlersを私はRotatingFileHandlerを使用していた、ConcurrentLogHandlerを使用して、実行する前に0] .doRollover()は、スタックの下のos.renameにトリガされた "File busy"エラーを引き起こします。
この設定でロールオーバーを強制する方法はありますか、これを可能にするために必要な変更はありますか? CentOSをサーバーとして使用しているので、ファイルシステムはUNIX/Linuxです。私は、アプリケーションが動作している間、常に[filename] .lockファイルをログファイルに見ることができます。
は