Add log_line_prefix placeholder %e to contain the current SQL state

Author: Guillaume Smet <guillaume.smet@gmail.com>
This commit is contained in:
Peter Eisentraut 2009-07-03 19:14:25 +00:00
parent e2b42aef53
commit f39df967e9
3 changed files with 22 additions and 13 deletions

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.220 2009/06/17 21:58:48 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.221 2009/07/03 19:14:25 petere Exp $ -->
<chapter Id="runtime-config"> <chapter Id="runtime-config">
<title>Server Configuration</title> <title>Server Configuration</title>
@ -3043,6 +3043,11 @@ local0.* /var/log/postgresql
<entry>Command tag: type of session's current command</entry> <entry>Command tag: type of session's current command</entry>
<entry>yes</entry> <entry>yes</entry>
</row> </row>
<row>
<entry><literal>%e</literal></entry>
<entry>SQL state</entry>
<entry>no</entry>
</row>
<row> <row>
<entry><literal>%c</literal></entry> <entry><literal>%c</literal></entry>
<entry>Session ID: see below</entry> <entry>Session ID: see below</entry>

View File

@ -42,7 +42,7 @@
* *
* *
* IDENTIFICATION * 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) } 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_server_log(ErrorData *edata);
static void send_message_to_frontend(ErrorData *edata); static void send_message_to_frontend(ErrorData *edata);
static char *expand_fmt_string(const char *fmt, 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. * Format tag info for log lines; append to the provided buffer.
*/ */
static void static void
log_line_prefix(StringInfo buf) log_line_prefix(StringInfo buf, ErrorData *edata)
{ {
/* static counter for line numbers */ /* static counter for line numbers */
static long log_line_number = 0; static long log_line_number = 0;
@ -1814,6 +1814,9 @@ log_line_prefix(StringInfo buf)
case 'x': case 'x':
appendStringInfo(buf, "%u", GetTopTransactionIdIfAny()); appendStringInfo(buf, "%u", GetTopTransactionIdIfAny());
break; break;
case 'e':
appendStringInfoString(buf, unpack_sql_state(edata->sqlerrcode));
break;
case '%': case '%':
appendStringInfoChar(buf, '%'); appendStringInfoChar(buf, '%');
break; break;
@ -2070,7 +2073,7 @@ send_message_to_server_log(ErrorData *edata)
formatted_log_time[0] = '\0'; formatted_log_time[0] = '\0';
log_line_prefix(&buf); log_line_prefix(&buf, edata);
appendStringInfo(&buf, "%s: ", error_severity(edata->elevel)); appendStringInfo(&buf, "%s: ", error_severity(edata->elevel));
if (Log_error_verbosity >= PGERROR_VERBOSE) if (Log_error_verbosity >= PGERROR_VERBOSE)
@ -2094,35 +2097,35 @@ send_message_to_server_log(ErrorData *edata)
{ {
if (edata->detail_log) if (edata->detail_log)
{ {
log_line_prefix(&buf); log_line_prefix(&buf, edata);
appendStringInfoString(&buf, _("DETAIL: ")); appendStringInfoString(&buf, _("DETAIL: "));
append_with_tabs(&buf, edata->detail_log); append_with_tabs(&buf, edata->detail_log);
appendStringInfoChar(&buf, '\n'); appendStringInfoChar(&buf, '\n');
} }
else if (edata->detail) else if (edata->detail)
{ {
log_line_prefix(&buf); log_line_prefix(&buf, edata);
appendStringInfoString(&buf, _("DETAIL: ")); appendStringInfoString(&buf, _("DETAIL: "));
append_with_tabs(&buf, edata->detail); append_with_tabs(&buf, edata->detail);
appendStringInfoChar(&buf, '\n'); appendStringInfoChar(&buf, '\n');
} }
if (edata->hint) if (edata->hint)
{ {
log_line_prefix(&buf); log_line_prefix(&buf, edata);
appendStringInfoString(&buf, _("HINT: ")); appendStringInfoString(&buf, _("HINT: "));
append_with_tabs(&buf, edata->hint); append_with_tabs(&buf, edata->hint);
appendStringInfoChar(&buf, '\n'); appendStringInfoChar(&buf, '\n');
} }
if (edata->internalquery) if (edata->internalquery)
{ {
log_line_prefix(&buf); log_line_prefix(&buf, edata);
appendStringInfoString(&buf, _("QUERY: ")); appendStringInfoString(&buf, _("QUERY: "));
append_with_tabs(&buf, edata->internalquery); append_with_tabs(&buf, edata->internalquery);
appendStringInfoChar(&buf, '\n'); appendStringInfoChar(&buf, '\n');
} }
if (edata->context) if (edata->context)
{ {
log_line_prefix(&buf); log_line_prefix(&buf, edata);
appendStringInfoString(&buf, _("CONTEXT: ")); appendStringInfoString(&buf, _("CONTEXT: "));
append_with_tabs(&buf, edata->context); append_with_tabs(&buf, edata->context);
appendStringInfoChar(&buf, '\n'); appendStringInfoChar(&buf, '\n');
@ -2132,14 +2135,14 @@ send_message_to_server_log(ErrorData *edata)
/* assume no newlines in funcname or filename... */ /* assume no newlines in funcname or filename... */
if (edata->funcname && edata->filename) if (edata->funcname && edata->filename)
{ {
log_line_prefix(&buf); log_line_prefix(&buf, edata);
appendStringInfo(&buf, _("LOCATION: %s, %s:%d\n"), appendStringInfo(&buf, _("LOCATION: %s, %s:%d\n"),
edata->funcname, edata->filename, edata->funcname, edata->filename,
edata->lineno); edata->lineno);
} }
else if (edata->filename) else if (edata->filename)
{ {
log_line_prefix(&buf); log_line_prefix(&buf, edata);
appendStringInfo(&buf, _("LOCATION: %s:%d\n"), appendStringInfo(&buf, _("LOCATION: %s:%d\n"),
edata->filename, edata->lineno); edata->filename, edata->lineno);
} }
@ -2153,7 +2156,7 @@ send_message_to_server_log(ErrorData *edata)
debug_query_string != NULL && debug_query_string != NULL &&
!edata->hide_stmt) !edata->hide_stmt)
{ {
log_line_prefix(&buf); log_line_prefix(&buf, edata);
appendStringInfoString(&buf, _("STATEMENT: ")); appendStringInfoString(&buf, _("STATEMENT: "));
append_with_tabs(&buf, debug_query_string); append_with_tabs(&buf, debug_query_string);
appendStringInfoChar(&buf, '\n'); appendStringInfoChar(&buf, '\n');

View File

@ -337,6 +337,7 @@
# %t = timestamp without milliseconds # %t = timestamp without milliseconds
# %m = timestamp with milliseconds # %m = timestamp with milliseconds
# %i = command tag # %i = command tag
# %e = SQL state
# %c = session ID # %c = session ID
# %l = session line number # %l = session line number
# %s = session start timestamp # %s = session start timestamp