Postgres 9.3.9で単一の接続またはユーザーまたはクライアントホストのすべてのSQLクエリをログに記録する方法はありますか?
つまり、log_statement = all
が、特定のユーザー名またはクライアントのホスト名またはクライアントのIPまたは接続IDの場合のみ。
1つのオプションは、すべてのクライアントのSQLアクティビティをログに記録し、ログを検索することです。もっと良い方法があるといいのですが。
私はクライアントホストでそれを行う方法を知りませんが、単一のデータベースユーザーの場合、これを(スーパーユーザーとして)使用できます。
ALTER ROLE someone SET log_statement TO 'all';
その後、そのsomeone
が接続するたびにlog_statementがオンになります。
あなたと協力している単一の接続の場合、この機能を(スーパーユーザーとして)作成できます。
create or replace function set_log_statement() returns void as $$
set log_statement='all'
$$ language sql security definer ;
次に、目的の単一接続でこの関数を呼び出して、それ自体のロギングをオンにします。