diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2009-07-03 19:14:25 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2009-07-03 19:14:25 +0000 |
commit | f39df967e930be301f976a537628a5788867e8a1 (patch) | |
tree | 92123313d80342d723e5dab5382197252ce567e4 /src | |
parent | e2b42aef53da08dfdcd30b5ffee543b65993ae3d (diff) | |
download | postgresql-f39df967e930be301f976a537628a5788867e8a1.tar.gz postgresql-f39df967e930be301f976a537628a5788867e8a1.zip |
Add log_line_prefix placeholder %e to contain the current SQL state
Author: Guillaume Smet <guillaume.smet@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/error/elog.c | 27 | ||||
-rw-r--r-- | src/backend/utils/misc/postgresql.conf.sample | 1 |
2 files changed, 16 insertions, 12 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index db334824347..06a78f2d701 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -42,7 +42,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.216 2009/06/25 23:07:15 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.217 2009/07/03 19:14:25 petere Exp $ * *------------------------------------------------------------------------- */ @@ -144,7 +144,7 @@ static char formatted_log_time[FORMATTED_TS_LEN]; } while (0) -static void log_line_prefix(StringInfo buf); +static void log_line_prefix(StringInfo buf, ErrorData *edata); static void send_message_to_server_log(ErrorData *edata); static void send_message_to_frontend(ErrorData *edata); static char *expand_fmt_string(const char *fmt, ErrorData *edata); @@ -1677,7 +1677,7 @@ setup_formatted_start_time(void) * Format tag info for log lines; append to the provided buffer. */ static void -log_line_prefix(StringInfo buf) +log_line_prefix(StringInfo buf, ErrorData *edata) { /* static counter for line numbers */ static long log_line_number = 0; @@ -1814,6 +1814,9 @@ log_line_prefix(StringInfo buf) case 'x': appendStringInfo(buf, "%u", GetTopTransactionIdIfAny()); break; + case 'e': + appendStringInfoString(buf, unpack_sql_state(edata->sqlerrcode)); + break; case '%': appendStringInfoChar(buf, '%'); break; @@ -2070,7 +2073,7 @@ send_message_to_server_log(ErrorData *edata) formatted_log_time[0] = '\0'; - log_line_prefix(&buf); + log_line_prefix(&buf, edata); appendStringInfo(&buf, "%s: ", error_severity(edata->elevel)); if (Log_error_verbosity >= PGERROR_VERBOSE) @@ -2094,35 +2097,35 @@ send_message_to_server_log(ErrorData *edata) { if (edata->detail_log) { - log_line_prefix(&buf); + log_line_prefix(&buf, edata); appendStringInfoString(&buf, _("DETAIL: ")); append_with_tabs(&buf, edata->detail_log); appendStringInfoChar(&buf, '\n'); } else if (edata->detail) { - log_line_prefix(&buf); + log_line_prefix(&buf, edata); appendStringInfoString(&buf, _("DETAIL: ")); append_with_tabs(&buf, edata->detail); appendStringInfoChar(&buf, '\n'); } if (edata->hint) { - log_line_prefix(&buf); + log_line_prefix(&buf, edata); appendStringInfoString(&buf, _("HINT: ")); append_with_tabs(&buf, edata->hint); appendStringInfoChar(&buf, '\n'); } if (edata->internalquery) { - log_line_prefix(&buf); + log_line_prefix(&buf, edata); appendStringInfoString(&buf, _("QUERY: ")); append_with_tabs(&buf, edata->internalquery); appendStringInfoChar(&buf, '\n'); } if (edata->context) { - log_line_prefix(&buf); + log_line_prefix(&buf, edata); appendStringInfoString(&buf, _("CONTEXT: ")); append_with_tabs(&buf, edata->context); appendStringInfoChar(&buf, '\n'); @@ -2132,14 +2135,14 @@ send_message_to_server_log(ErrorData *edata) /* assume no newlines in funcname or filename... */ if (edata->funcname && edata->filename) { - log_line_prefix(&buf); + log_line_prefix(&buf, edata); appendStringInfo(&buf, _("LOCATION: %s, %s:%d\n"), edata->funcname, edata->filename, edata->lineno); } else if (edata->filename) { - log_line_prefix(&buf); + log_line_prefix(&buf, edata); appendStringInfo(&buf, _("LOCATION: %s:%d\n"), edata->filename, edata->lineno); } @@ -2153,7 +2156,7 @@ send_message_to_server_log(ErrorData *edata) debug_query_string != NULL && !edata->hide_stmt) { - log_line_prefix(&buf); + log_line_prefix(&buf, edata); appendStringInfoString(&buf, _("STATEMENT: ")); append_with_tabs(&buf, debug_query_string); appendStringInfoChar(&buf, '\n'); diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 3f7b43f0ccc..c1b888c0d46 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -337,6 +337,7 @@ # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %i = command tag + # %e = SQL state # %c = session ID # %l = session line number # %s = session start timestamp |