コンピューターにPostgreSQL DBがあり、クエリを実行するアプリケーションがあります。
DBで実行されているクエリを確認するにはどうすればよいですか?
Linuxコンピューターとpgadminを使用しています。
サーバーログをオンにします。
log_statement = all
これにより、データベースサーバーへのすべての呼び出しがログに記録されます。
実動サーバーではlog_statement = all
を使用しません。巨大なログファイルを生成します。
ロギングパラメータに関するマニュアル:
log_statement
(enum
)どのSQLステートメントを記録するかを制御します。有効な値は、
none
(オフ)、ddl
、mod
、およびall
(すべてのステートメント)です。 [...]
log_statement
パラメーターをリセットするには、サーバーのリロード(SIGHUP
)が必要です。再起動はnot必要です。 パラメータの設定方法に関するマニュアル を読んでください。
サーバーログとpgAdminのログを混同しないでください。 2つの異なるもの!
ファイルにアクセスできる場合(リモートサーバーの場合はそうではないかもしれません)、pgAdminでサーバーログファイルを調べて、正しくセットアップすることもできます。 Tools -> Server status
をご覧ください。サーバーステータスウィンドウの詳細については、 pgAdmin IIIのマニュアル をご覧ください。
vim
(または選択したエディター/リーダー)を使用してサーバーログファイルを読み取ることを好みます。
ロギング技術に関連する場合、PostgreSqlは非常に高度です。
ログはInstallationfolder/data/pg_log folder
に保存されます。ログ設定はpostgresql.conf
ファイルに配置されます。
ログ形式は通常stderr
として設定されます。ただし、CSVログ形式をお勧めします。 CSV形式の変更を有効にするには
log_destination = 'stderr,csvlog'
logging_collector = on
すべてのクエリをログに記録するには、新規インストールに非常に便利です。クエリの実行時間
log_min_duration_statement = 0
データベースでアクティブなクエリを表示するには、次を使用します
SELECT * FROM pg_stat_activity
特定のクエリを記録するには、クエリタイプを設定します
log_statement = 'all' # none, ddl, mod, all
クエリのロギングの詳細については、 PostgreSql Log を参照してください。
BrewからのMacインストールで、/ usr/local/var/log/postgres.logにログファイルが見つかりました。
Djangoをpostgres 10.6で使用している間、ログはデフォルトで有効になっており、次のことが簡単にできました。
tail -f /var/log/postgresql/*
Ubuntu 18.04、Django 2 +、python3 +
このログディレクトリ名でログ設定がpostgresql.confで有効になっているかどうかは、pg_logフォルダーで確認できます。