こんにちは、フレンズです。
この記事では、Flaskのロギングについて学びます。
なぜログを取るのか?
ログを取ることは、コーディングに不可欠な要素です。
ログを取ることで、プログラムの流れをより深いレベルで理解することができます。
したがって、コードの実行プロセス全体がより透明化されます。
どのIPアドレスがサイトにアクセスしているか、どのライブラリにアクセスしたかなどを追跡することができます。
開発者は後でこのデータを使ってアプリケーションのパフォーマンスを分析し、スケールアウトのような必要なアクションを取ることができます。
ログを取るもう一つの重要な理由は、エラーをデバッグすることです。
イベントのログがあれば、エラーが発生した正確なステップを追跡することができ、開発者の時間を大幅に節約することができます。
Flask ロギングの4つの部分
ロギング処理全体は4つのパートで構成されています。
Logger, handler, Formatter, Filter です。
それぞれについて見ていきましょう。
1. ロガー
ロギングシステムのエントリーレベルです。
アプリケーションからのイベントを記録する主要なインターフェイスを提供します。
Loggerによって記録されたこれらのイベントは、ログレコードと呼ばれます。
各レコードには、セキュリティレベルがあります。
4つのレベルがあります。
| ログレベル] [重要度
| — | — |
| DEBUG(デバッグ)|10
| INFO | 20
| 警告|30
| ERROR(エラー)| 40
| クリティカル|50
ロガーは、ログ レベルを持つように設定されています。
ロガーは、深刻度がそのログ レベルより高いログのみを記録します。
そして、ロガーはそれらをハンドラに渡します。
2. ハンドラ
ハンドラは、イベントやレコードを目的地に誘導するものです。
異なるハンドラを使用することで、イベントを異なるファイルにルーティングしたり、複数のハンドラを使用して、一部をファイルに、残りを別の場所に誘導することも可能です。
3. フォーマッタ
ログフォーマッターは、ログレコードのレイアウトを指定するために使用されます。
したがって、保存されるログの形式を指定することができます。
4. フィルター
フィルタを使うと、ログレベル以外のパラメータに基づいてログレコードをフィルタリングすることができます。
Flask のデフォルトのログシステムを利用する
Flask はアプリケーションの実行中に発生したイベントをトレースするために Python のロギングシステムそのものを使用します。
Python Logging にはデフォルトの Logger – BasicConfig があり、これを使用してメッセージを記録することができます。
BasicConfigのシンタックスは以下の通りです。
import logging
logging.basicConfig(filename = 'filename.log' , level = logging.<log_level>, format = '<message_structure>' )
|
ログは.logという拡張子を持つファイルに保存されます。
コンソールにログを表示したい場合は、filename属性を削除してください。
level属性は、ロガーのログレベルを指定し、DEBUG, INFO, WARNING, ERROR, CRITICALのいずれかを指定します。
そして、formatは、レコードの構造を指定します。
それは、構成することができます。
- (asctime)s- 文字列としてのタイムスタンプ。
- (levelname)s-文字列としてのロギング・レベル。
- (name)s-文字列としてのロガー名。
(name)s-ロガーの名前 (文字列) * %(threadname)s- スレッド名 (文字列) - %(message)s- ログのメッセージ。
ロガーを呼び出すには、必要な場所で ” app.logger.log_level(“message”) ” を呼び出す必要があります。
この記事もチェック:Flaskのエラー処理|エラーメッセージの表示やエラーログを表示させる方法
Flask アプリケーションにロギングを実装する
では、FlaskアプリケーションでDefault BasicConfigのLogging Systemを適用してみましょう。
そこで、以下のようなコードを考えてみます。
from flask import Flask
import logging
app = Flask(__name__)
logging.basicConfig(filename = 'record.log' , level = logging.DEBUG, format = f '%(asctime)s %(levelname)s %(name)s %(threadName)s : %(message)s' )
@app .route( '/blogs' )
def blog():
app.logger.info( 'Info level log' )
app.logger.warning( 'Warning level log' )
return f "Welcome to the Blog"
app.run(host = 'localhost' , debug = True )
|
サーバを起動すると、Flaskアプリケーションのフォルダ内に “record.log “が作成されます。
Webページで遊んでみると、イベントがログファイルに保存されているのがわかると思います。
この記事もチェック:FlaskとSQLAlchemyを使ってログイン認証機能を実装する方法
まとめ
以上です。
以上、Flask のロギングについてでした。
自分のアプリケーションにロギングを実装してみてください。