【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クエリとその実行時間がログに表示されます。