aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2020-03-15 11:20:21 +0100
committerPeter Eisentraut <peter@eisentraut.org>2020-03-15 11:20:21 +0100
commit70a7b4776be4e776221e578d8ca53b2b9f8118c0 (patch)
tree69cd988be0d66fa53ea099f714950a2e0dfbaf09 /src
parentd8cfa82d51f812f886d06bdc7bb73470e55d74b7 (diff)
downloadpostgresql-70a7b4776be4e776221e578d8ca53b2b9f8118c0.tar.gz
postgresql-70a7b4776be4e776221e578d8ca53b2b9f8118c0.zip
Add backend type to csvlog and optionally log_line_prefix
The backend type, which corresponds to what pg_stat_activity.backend_type shows, is added as a column to the csvlog and can optionally be added to log_line_prefix using the new %b placeholder. Reviewed-by: Julien Rouhaud <rjuju123@gmail.com> Reviewed-by: Kuntal Ghosh <kuntalghosh.2007@gmail.com> Reviewed-by: Alvaro Herrera <alvherre@2ndquadrant.com> Reviewed-by: Justin Pryzby <pryzby@telsasoft.com> Discussion: https://www.postgresql.org/message-id/flat/c65e5196-4f04-4ead-9353-6088c19615a3@2ndquadrant.com
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/error/elog.c28
-rw-r--r--src/backend/utils/misc/postgresql.conf.sample1
-rw-r--r--src/test/regress/pg_regress.c2
3 files changed, 30 insertions, 1 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index f8ae94729cc..62eef7b71f4 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -72,6 +72,7 @@
#include "libpq/pqformat.h"
#include "mb/pg_wchar.h"
#include "miscadmin.h"
+#include "postmaster/bgworker.h"
#include "postmaster/postmaster.h"
#include "postmaster/syslogger.h"
#include "storage/ipc.h"
@@ -2492,6 +2493,23 @@ log_line_prefix(StringInfo buf, ErrorData *edata)
padding > 0 ? padding : -padding);
break;
+ case 'b':
+ {
+ const char *backend_type_str;
+
+ if (MyProcPid == PostmasterPid)
+ backend_type_str = "postmaster";
+ else if (MyBackendType == B_BG_WORKER)
+ backend_type_str = MyBgworkerEntry->bgw_type;
+ else
+ backend_type_str = GetBackendTypeDesc(MyBackendType);
+
+ if (padding != 0)
+ appendStringInfo(buf, "%*s", padding, backend_type_str);
+ else
+ appendStringInfoString(buf, backend_type_str);
+ break;
+ }
case 'u':
if (MyProcPort)
{
@@ -2920,6 +2938,16 @@ write_csvlog(ErrorData *edata)
if (application_name)
appendCSVLiteral(&buf, application_name);
+ appendStringInfoChar(&buf, ',');
+
+ /* backend type */
+ if (MyProcPid == PostmasterPid)
+ appendCSVLiteral(&buf, "postmaster");
+ else if (MyBackendType == B_BG_WORKER)
+ appendCSVLiteral(&buf, MyBgworkerEntry->bgw_type);
+ else
+ appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType));
+
appendStringInfoChar(&buf, '\n');
/* If in the syslogger process, try to write messages direct to file */
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index e58e4788a8e..aa44f0c9bf2 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -528,6 +528,7 @@
# %d = database name
# %r = remote host and port
# %h = remote host
+ # %b = backend type
# %p = process ID
# %t = timestamp without milliseconds
# %m = timestamp with milliseconds
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index a53e4a6243b..f6a5e1b9c76 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -2334,7 +2334,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);