0001-Add-backend-type-placeholder-to-log_line_prefix.patch

text/plain

Filename: 0001-Add-backend-type-placeholder-to-log_line_prefix.patch
Type: text/plain
Part: 0
Message: backend type in log_line_prefix?

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch 0001
Subject: Add backend type placeholder to log_line_prefix
File+
doc/src/sgml/config.sgml 5 0
src/backend/bootstrap/bootstrap.c 1 1
src/backend/postmaster/autovacuum.c 2 2
src/backend/postmaster/bgworker.c 1 1
src/backend/postmaster/pgarch.c 1 1
src/backend/postmaster/pgstat.c 1 1
src/backend/postmaster/postmaster.c 8 1
src/backend/postmaster/syslogger.c 1 1
src/backend/utils/error/elog.c 6 0
src/backend/utils/init/globals.c 2 0
src/include/miscadmin.h 2 0
src/test/regress/pg_regress.c 1 1
From 3cb15882f671c8d37cb0f844ce62d1853870875c Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Wed, 12 Feb 2020 22:04:29 +0100
Subject: [PATCH] Add backend type placeholder to log_line_prefix

---
 doc/src/sgml/config.sgml            | 5 +++++
 src/backend/bootstrap/bootstrap.c   | 2 +-
 src/backend/postmaster/autovacuum.c | 4 ++--
 src/backend/postmaster/bgworker.c   | 2 +-
 src/backend/postmaster/pgarch.c     | 2 +-
 src/backend/postmaster/pgstat.c     | 2 +-
 src/backend/postmaster/postmaster.c | 9 ++++++++-
 src/backend/postmaster/syslogger.c  | 2 +-
 src/backend/utils/error/elog.c      | 6 ++++++
 src/backend/utils/init/globals.c    | 2 ++
 src/include/miscadmin.h             | 2 ++
 src/test/regress/pg_regress.c       | 2 +-
 12 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index c1128f89ec..9c068f3903 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -6470,6 +6470,11 @@ <title>What to Log</title>
              <entry>Application name</entry>
              <entry>yes</entry>
             </row>
+            <row>
+             <entry><literal>%b</literal></entry>
+             <entry>Backend process type</entry>
+             <entry>yes</entry>
+            </row>
             <row>
              <entry><literal>%u</literal></entry>
              <entry>User name</entry>
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index bfc629c753..1c559851b4 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -342,7 +342,7 @@ AuxiliaryProcessMain(int argc, char *argv[])
 				statmsg = "??? process";
 				break;
 		}
-		init_ps_display(statmsg, "", "", "");
+		init_ps_display((backend_type_str = statmsg), "", "", "");
 	}
 
 	/* Acquire configuration parameters, unless inherited from postmaster */
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 6d1f28c327..d50d4b9b02 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -434,7 +434,7 @@ AutoVacLauncherMain(int argc, char *argv[])
 	am_autovacuum_launcher = true;
 
 	/* Identify myself via ps */
-	init_ps_display(pgstat_get_backend_desc(B_AUTOVAC_LAUNCHER), "", "", "");
+	init_ps_display((backend_type_str = pgstat_get_backend_desc(B_AUTOVAC_LAUNCHER)), "", "", "");
 
 	ereport(DEBUG1,
 			(errmsg("autovacuum launcher started")));
@@ -1507,7 +1507,7 @@ AutoVacWorkerMain(int argc, char *argv[])
 	am_autovacuum_worker = true;
 
 	/* Identify myself via ps */
-	init_ps_display(pgstat_get_backend_desc(B_AUTOVAC_WORKER), "", "", "");
+	init_ps_display((backend_type_str = pgstat_get_backend_desc(B_AUTOVAC_WORKER)), "", "", "");
 
 	SetProcessingMode(InitProcessing);
 
diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c
index 75fc0d5d33..105b755c50 100644
--- a/src/backend/postmaster/bgworker.c
+++ b/src/backend/postmaster/bgworker.c
@@ -689,7 +689,7 @@ StartBackgroundWorker(void)
 	IsBackgroundWorker = true;
 
 	/* Identify myself via ps */
-	init_ps_display(worker->bgw_name, "", "", "");
+	init_ps_display((backend_type_str = worker->bgw_name), "", "", "");
 
 	/*
 	 * If we're not supposed to have shared memory access, then detach from
diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c
index 3ca30badb2..cd4f8b6392 100644
--- a/src/backend/postmaster/pgarch.c
+++ b/src/backend/postmaster/pgarch.c
@@ -241,7 +241,7 @@ PgArchiverMain(int argc, char *argv[])
 	/*
 	 * Identify myself via ps
 	 */
-	init_ps_display("archiver", "", "", "");
+	init_ps_display((backend_type_str = "archiver"), "", "", "");
 
 	pgarch_MainLoop();
 
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 7169509a79..8d48abfe1e 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -4447,7 +4447,7 @@ PgstatCollectorMain(int argc, char *argv[])
 	/*
 	 * Identify myself via ps
 	 */
-	init_ps_display("stats collector", "", "", "");
+	init_ps_display((backend_type_str = "stats collector"), "", "", "");
 
 	/*
 	 * Read in existing stats files or initialize the stats to zero.
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index b3986bee75..f0aba28655 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -579,6 +579,8 @@ PostmasterMain(int argc, char *argv[])
 
 	IsPostmasterEnvironment = true;
 
+	backend_type_str = "postmaster";
+
 	/*
 	 * We should not be creating any files or directories before we check the
 	 * data directory (see checkDataDir()), but just in case set the umask to
@@ -2621,6 +2623,8 @@ InitProcessGlobals(void)
 			((uint64) MyStartTimestamp >> 20);
 	}
 	srandom(rseed);
+
+	backend_type_str = "uninitialized";
 }
 
 
@@ -4422,11 +4426,14 @@ BackendInitialize(Port *port)
 	 * init_ps_display() to avoid abusing the parameters like this.
 	 */
 	if (am_walsender)
-		init_ps_display(pgstat_get_backend_desc(B_WAL_SENDER), port->user_name, remote_ps_data,
+		init_ps_display((backend_type_str = pgstat_get_backend_desc(B_WAL_SENDER)), port->user_name, remote_ps_data,
 						update_process_title ? "authentication" : "");
 	else
+	{
+		backend_type_str = "client backend";
 		init_ps_display(port->user_name, port->database_name, remote_ps_data,
 						update_process_title ? "authentication" : "");
+	}
 
 	/*
 	 * Disable the timeout, and prevent SIGTERM/SIGQUIT again.
diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c
index b2b69a7207..0b0ba949dc 100644
--- a/src/backend/postmaster/syslogger.c
+++ b/src/backend/postmaster/syslogger.c
@@ -179,7 +179,7 @@ SysLoggerMain(int argc, char *argv[])
 
 	am_syslogger = true;
 
-	init_ps_display("logger", "", "", "");
+	init_ps_display((backend_type_str = "logger"), "", "", "");
 
 	/*
 	 * If we restarted, our stderr is already redirected into our own input
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index f5b0211f66..2baa7aedff 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -2492,6 +2492,12 @@ log_line_prefix(StringInfo buf, ErrorData *edata)
 										   padding > 0 ? padding : -padding);
 
 				break;
+			case 'b':
+				if (padding != 0)
+					appendStringInfo(buf, "%*s", padding, backend_type_str);
+				else
+					appendStringInfoString(buf, backend_type_str);
+				break;
 			case 'u':
 				if (MyProcPort)
 				{
diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c
index eb19644419..f1f8e61507 100644
--- a/src/backend/utils/init/globals.c
+++ b/src/backend/utils/init/globals.c
@@ -78,6 +78,8 @@ char		postgres_exec_path[MAXPGPATH];	/* full path to backend */
 /* note: currently this is not valid in backend processes */
 #endif
 
+const char *backend_type_str;
+
 BackendId	MyBackendId = InvalidBackendId;
 
 BackendId	ParallelMasterBackendId = InvalidBackendId;
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index f985453ec3..9c9418e08a 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -178,6 +178,8 @@ extern char pkglib_path[];
 extern char postgres_exec_path[];
 #endif
 
+extern const char *backend_type_str;
+
 /*
  * done in storage/backendid.h for now.
  *
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index 92bd28dc5a..d9f8a74a19 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -2350,7 +2350,7 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc
 		fputs("\n# Configuration added by pg_regress\n\n", pg_conf);
 		fputs("log_autovacuum_min_duration = 0\n", pg_conf);
 		fputs("log_checkpoints = on\n", pg_conf);
-		fputs("log_line_prefix = '%m [%p] %q%a '\n", pg_conf);
+		fputs("log_line_prefix = '%m %b[%p] %q%a '\n", pg_conf);
 		fputs("log_lock_waits = on\n", pg_conf);
 		fputs("log_temp_files = 128kB\n", pg_conf);
 		fputs("max_prepared_transactions = 2\n", pg_conf);
-- 
2.25.0