mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Add log_line_prefix placeholder %e to contain the current SQL state
Author: Guillaume Smet <guillaume.smet@gmail.com>
This commit is contained in:
parent
e2b42aef53
commit
f39df967e9
@ -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>
|
||||||
|
@ -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');
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user