85

私のコンピューターには PostgreSQL DB があり、クエリを実行するアプリケーションがあります。

DB で実行されたクエリを確認するにはどうすればよいですか?

Linux コンピューターと pgadmin を使用しています。

4

5 に答える 5

80

サーバー ログをオンにします。

log_statement = all

これにより、データベース サーバーへのすべての呼び出しがログに記録されます。

log_statement = all本番サーバーでは使用しません。巨大なログ ファイルを生成します。
ロギングパラメータに関するマニュアル:

log_statement( enum)

ログに記録する SQL ステートメントを制御します。有効な値は、none(オフ) ddl、、、modおよびall(すべてのステートメント) です。[...]

パラメータをリセットするにlog_statementは、サーバーのリロードが必要です ( SIGHUP)。再起動は必要ありませんパラメータの設定方法については、マニュアルを参照してください。

サーバー ログと pgAdmin のログを混同しないでください。2つの異なること!

ファイルにアクセスできる場合 (リモート サーバーの場合はそうでない場合もあります)、正しく設定されている場合は、pgAdmin でサーバー ログ ファイルを確認することもできます。pgadmin III で、以下を見てくださいTools -> Server status。そのオプションは pgadmin4 で削除されました。

サーバーログファイルをvim(または任意のエディター/リーダーで)読み取ることを好みます。

于 2011-11-21T07:10:38.507 に答える
72

PostgreSql は、ロギング技術に関連する場合、非常に高度です。

ログは に保存されInstallationfolder/data/pg_log folderます。ログ設定はpostgresql.confファイルに配置されます。

通常、ログ形式は として設定されstderrます。ただし、CSV ログ形式をお勧めします。で CSV 形式の変更を有効にするには

log_destination = 'stderr,csvlog'   
logging_collector = on

新しいインストールに非常に役立つすべてのクエリをログに記録するには、min を設定します。クエリの実行時間

log_min_duration_statement = 0

データベースでアクティブなクエリを表示するには、次を使用します

SELECT * FROM pg_stat_activity

特定のクエリをログに記録するには、クエリの種類を設定します

log_statement = 'all'           # none, ddl, mod, all

Logging クエリの詳細については、PostgreSql Logを参照してください。

于 2011-11-21T08:14:32.853 に答える
2

postgres 10.6 でDjangoを使用している間、ログはデフォルトで有効になっていました。

tail -f /var/log/postgresql/*

Ubuntu 18.04、ジャンゴ 2+、python3+

于 2018-12-12T05:19:34.143 に答える