😭
Supabaseで開発時にDBのクエリログが見たい
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