Flask を使用してエラーをログに記録する

Salman Mehmood 2023年6月21日
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 モジュールから FileHandlerWARNING の 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 エラーはログに記録しないということです。これは、探しているエラーのタイプではないためです。 それはアプリケーションではありません。

Flask ロギング - 出力 1

今度は 1/0 を返そうとしますが、失敗します。 サーバーを再度実行し、ページを再起動します。

内部サーバー エラーが発生します。これは、HTTP が指すことができないエラーであることを意味しますが、ログ ファイルを調べると、エラーの詳細が表示されます。

def Error_Los():
    return 1 / 0

出力:

Flask ロギング - 出力 2

エラー ログの他のハンドラーについて詳しく知りたい場合は、こちら から公式ドキュメントにアクセスしてください。

完全な 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()
著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

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