Flask を使用してエラーをログに記録する
この説明で、エラー処理、特にエラーのロギングについて学びます。 この記事の終わりまでに、エラーをファイルに記録する方法と、Flask でエラーを記録する他の方法をチェックする場所を理解する必要があります。
Flask の Logging モジュールを使用してエラーをログに記録する
通常、本番アプリはデバッグ モードにならないため、logging
モジュールを使用できる唯一の方法は、エラーがあることを知ることです。 この場合、ファイルに送信されるため、後で表示してデバッグし、問題を修正できます。
これはデフォルトでは有効になっていません。 Flask アプリにロギング機能を追加する必要があります。 そのため、デバッグ モードではない、非常に基本的な Flask アプリの実行を示します。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def Error_Los():
return "The page without error"
if __name__ == "__main__":
app.run()
最初に使用するのは logging
モジュールです。 これをインポートする必要があります。 これは組み込みの Python モジュールであるため、Python 3 を使用する場合はインストールする必要はありません。
logging
モジュールから FileHandler
と WARNING
の 2つをインポートします。
FileHandler は、エラーをファイルに記録する方法です。 WARNING
は、ログをトリガーするレベルです。 より深刻なエラーのようなものである可能性があります。
ただし、必要なだけログを記録できるため、ファイルにログインするときに警告が表示されると便利です。
from logging import FileHandler, WARNING
ここで、FileHandler
をインスタンス化する必要があり、エラーが保存されるファイル名を渡す必要があります。
F_H = FileHandler("errorlogs.txt")
次に、setLevel()
を使用してファイル ハンドラーのレベルを設定する必要があります。 これはファイル FileHandler
クラスのメソッドであるため、logging
モジュールからインポートした WARNING
レベルを渡します。
ここで、Flask アプリにロガーを使用する必要があります。次に addHandler
を使用します。その中には、上で作成したファイル ハンドラー オブジェクトがあります。
F_H.setLevel(WARNING)
app.logger.addHandler(F_H)
このアプリを実行すると、errorlogs.txt
ファイルが作成されます。 また、注意すべきことの 1つは、アプリケーションのみをログに記録し、HTTP エラーはログに記録しないということです。これは、探しているエラーのタイプではないためです。 それはアプリケーションではありません。
今度は 1/0
を返そうとしますが、失敗します。 サーバーを再度実行し、ページを再起動します。
内部サーバー エラーが発生します。これは、HTTP が指すことができないエラーであることを意味しますが、ログ ファイルを調べると、エラーの詳細が表示されます。
def Error_Los():
return 1 / 0
出力:
エラー ログの他のハンドラーについて詳しく知りたい場合は、こちら から公式ドキュメントにアクセスしてください。
完全な Python コード:
from flask import Flask
from logging import FileHandler, WARNING
app = Flask(__name__)
F_H = FileHandler("errorlogs.txt")
F_H.setLevel(WARNING)
app.logger.addHandler(F_H)
@app.route("/")
def Error_Los():
return 1 / 0
if __name__ == "__main__":
app.run()
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn