summaryrefslogtreecommitdiff
path: root/src/backend/replication/walsender.c
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2014-09-13 02:55:45 +0900
committerFujii Masao <fujii@postgresql.org>2014-09-13 02:55:45 +0900
commit4ad2a548050fdde07fed93e6c60a4d0a7eba0622 (patch)
tree6cb44928047a8209ddbb5e34b9f76edd2ea31353 /src/backend/replication/walsender.c
parenta2dabf0e1dda93c860b10bff7b73617e7b090108 (diff)
downloadpostgresql-4ad2a548050fdde07fed93e6c60a4d0a7eba0622.tar.gz
Add GUC to enable logging of replication commands.
Previously replication commands like IDENTIFY_COMMAND were not logged even when log_statements is set to all. Some users who want to audit all types of statements were not satisfied with this situation. To address the problem, this commit adds new GUC log_replication_commands. If it's enabled, all replication commands are logged in the server log. There are many ways to allow us to enable that logging. For example, we can extend log_statement so that replication commands are logged when it's set to all. But per discussion in the community, we reached the consensus to add separate GUC for that. Reviewed by Ian Barwick, Robert Haas and Heikki Linnakangas.
Diffstat (limited to 'src/backend/replication/walsender.c')
-rw-r--r--src/backend/replication/walsender.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index 844a5dea1d..384c9b61ce 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -108,6 +108,7 @@ bool am_db_walsender = false; /* Connected to a database? */
int max_wal_senders = 0; /* the maximum number of concurrent walsenders */
int wal_sender_timeout = 60 * 1000; /* maximum time to send one
* WAL data message */
+bool log_replication_commands = false;
/*
* State for WalSndWakeupRequest
@@ -1268,13 +1269,19 @@ exec_replication_command(const char *cmd_string)
MemoryContext old_context;
/*
+ * Log replication command if log_replication_commands is enabled.
+ * Even when it's disabled, log the command with DEBUG1 level for
+ * backward compatibility.
+ */
+ ereport(log_replication_commands ? LOG : DEBUG1,
+ (errmsg("received replication command: %s", cmd_string)));
+
+ /*
* CREATE_REPLICATION_SLOT ... LOGICAL exports a snapshot until the next
* command arrives. Clean up the old stuff if there's anything.
*/
SnapBuildClearExportedSnapshot();
- elog(DEBUG1, "received replication command: %s", cmd_string);
-
CHECK_FOR_INTERRUPTS();
cmd_context = AllocSetContextCreate(CurrentMemoryContext,