From 3cb15882f671c8d37cb0f844ce62d1853870875c Mon Sep 17 00:00:00 2001 From: Peter Eisentraut 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 @@ What to Log Application name yes + + %b + Backend process type + yes + %u User name 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