【Elixir】Ecto V3以上でTelemetryを使ってSQLログを出力する方法
ElixirのEcto V3以上でTelemetryを使用してSQLログを出力する方法について説明します。
Telemetryは、ErlangおよびElixirアプリケーションのメトリック、トレース、およびログを収集するためのライブラリです。
これにより、アプリケーションのパフォーマンスを監視し、問題の特定やデバッグが容易になります。
環境
- Elixir 1.14.2
- Ecto 3.9.4
telemetry のインストール
まず、telemetry と telemetry_poller をプロジェクトの依存関係に追加してください。
これらは、Telemetryイベントを収集し、リアルタイムでログ出力を可能にします。mix.exs ファイル内の deps 関数に次のように追加します。
| |
追記が完了したら依存関係をインストール & コンパイルします。
$ mix deps.get
$ mix deps.compile
ログモジュールを作成
Telemetryイベントハンドラを設定します。
プロジェクト内の任意のファイル(例えば lib/my_app/telemetry.ex)にTelemetryハンドラを作成してください。
| |
イベントの設定
lib/my_app/application.ex ファイル内の start/2 関数内で、次のようにハンドラをアタッチします。
| |
これで、アプリケーションがTelemetryを使用してSQLログを出力するように設定されました。
アプリケーションを実行すると、SQLクエリとその実行時間がログに表示されます。