Windows Server 2008 R2でPostgreSQL 9.1を実行しています。 postgresql.confファイルを変更して、SQLステートメントのstderrログへのロギングを有効にしましたが、すべてのロギングをオフにしないと、ロギングを無効にできないようです。サーバーにpg_ctl reloadを介してSIGHUPシグナルが送信され、これを修正しようとするたびにサービスが再起動されました。マシン全体を再起動しても、効果がないようです。
これを達成しているはずの現在のpostgresql.confの特定の行。
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
#debug_print_parse = off
#debug_print_rewritten = off
#debug_print_plan = off
#debug_pretty_print = on
#log_checkpoints = off
#log_connections = off
#log_disconnections = off
#log_duration = off
#log_error_verbosity = default
log_hostname = on
log_line_prefix = '%t %a %u %r '
#log_lock_waits = off
log_statement = 'none'
#track_activities = on
#track_counts = on
#track_functions = none
#track_activity_query_size = 1024
#update_process_title = on
#stats_temp_directory = 'pg_stat_tmp'
マニュアルを確認しました。設定ファイルのlog_statement
行が適切に設定されていることを確認するだけでよいようです。
ただし、実際にログに記録される内容に影響を与えるようには思えません。 logging_collector
をオフにすると、テキストログファイルが生成されなくなります。これは、PostgreSQLが少なくとも正しいpostgres.conf
ファイルを指していること、およびPostgreSQLがそのファイルを読み取って構成を決定していることを示します。
SQLステートメントのログをオフにするにはどうすればよいですか?
リストにない関連設定がいくつかあります。章を確認してください マニュアルの「いつログするか」 、特にこれらの設定:
log_min_messages (enum)
log_min_error_statement (enum)
log_min_duration_statement (integer) -- as @Jack already hinted in his comment.
ALTER USER someuser SET log_statement = 'all';
またはALTER DATABASE somedb SET log_statement = 'all'
をいただけますか?
これらの設定は、適用されるDB /ユーザーのpostgresql.conf
に設定されているデフォルトを上書きします。
これが事実である場合、新しく作成されたユーザーを使用して新しく作成されたデータベースに接続すると、しないステートメントがログに記録されることがわかります。
これが事実であることが判明した場合は、次のコマンドで削除します。
ALTER USER someuser RESET log_statement;
ALTER DATABASE somedb RESET log_statement;