😭

Supabaseで開発時にDBのクエリログが見たい

2023/05/12に公開

Supabaseで開発してる時に実際どういうクエリが実行された結果、今のレスポンスが返ってきてるのか知りたいシチュエーションがあったのでやってみました。

PostgRESTで吐き出したりしてくれてないのかなと思いましたが、どこかのIssueで「それはRDBMSの責務であって、PostgRESTの責務ではない」と言ってたのでDB側でログ出すしかなさそうです。

PostgreSQLの設定を変える

DBのDockerイメージはSupabase側が管理してるイメージですし、Supabase CLIを使った開発ではpostgres.confや環境変数が任意の物にできないので一工夫必要です。

DBコネクションのユーザーを変える

supabase statusで出力される情報では、postgres@postgres:postgresだと思いますが、postgresユーザーはSUPERUSER権限を持っていないので使えません。

なので、supabase_adminユーザーで接続します。
パスワードはpostgresです。

log_statement設定変える

ALTER DATABASE postgres SET log_statement = 'all';

ログレベルや変更先は自分が変えたい設定にしてください。

PostgRESTのコンテナを再起動する

log_statementの設定は、新しいコネクションから有効になるのでコンテナを再起動してコネクションを新しくしてあげます。

foobarの部分は自分のプロジェクト名に変えてください。

docker restart supabase_rest_foobar

ログ見る

ログはPostgreSQLコンテナの標準出力に出てるので、docker logsで見れます。

foobarの部分は自分のプロジェクト名に変えてください。

docker logs -f supabase_db_foobar

おわり

開発時にクエリとか割と見たい物な気がするので、ここらへんがもっと手軽になると嬉しいなぁって気持ちになりました。

Discussion