mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-12 18:34:36 +08:00
Provide a log_level setting for auto_explain
Up to now the log level has been hardcoded at LOG. A new auto_explain.log_level setting allows that to be modified. Discussion: https://postgr.es/m/CAPPfruyZh+snR2AdmutrA0B_caj=yWZkLqxUTZYNjJCaQ_wKQg@mail.gmail.com Tom Dunstan and Andrew Dunstan Reviewed by Daniel Gustafsson
This commit is contained in:
parent
6574f19127
commit
2d36a5e9da
@ -28,6 +28,7 @@ static bool auto_explain_log_buffers = false;
|
||||
static bool auto_explain_log_triggers = false;
|
||||
static bool auto_explain_log_timing = true;
|
||||
static int auto_explain_log_format = EXPLAIN_FORMAT_TEXT;
|
||||
static int auto_explain_log_level = LOG;
|
||||
static bool auto_explain_log_nested_statements = false;
|
||||
static double auto_explain_sample_rate = 1;
|
||||
|
||||
@ -39,6 +40,20 @@ static const struct config_enum_entry format_options[] = {
|
||||
{NULL, 0, false}
|
||||
};
|
||||
|
||||
static const struct config_enum_entry loglevel_options[] = {
|
||||
{"debug5", DEBUG5, false},
|
||||
{"debug4", DEBUG4, false},
|
||||
{"debug3", DEBUG3, false},
|
||||
{"debug2", DEBUG2, false},
|
||||
{"debug1", DEBUG1, false},
|
||||
{"debug", DEBUG2, true},
|
||||
{"info", INFO, false},
|
||||
{"notice", NOTICE, false},
|
||||
{"warning", WARNING, false},
|
||||
{"log", LOG, false},
|
||||
{NULL, 0, false}
|
||||
};
|
||||
|
||||
/* Current nesting depth of ExecutorRun calls */
|
||||
static int nesting_level = 0;
|
||||
|
||||
@ -141,6 +156,18 @@ _PG_init(void)
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
DefineCustomEnumVariable("auto_explain.log_level",
|
||||
"Log level for the plan.",
|
||||
NULL,
|
||||
&auto_explain_log_level,
|
||||
LOG,
|
||||
loglevel_options,
|
||||
PGC_SUSET,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
DefineCustomBoolVariable("auto_explain.log_nested_statements",
|
||||
"Log nested statements.",
|
||||
NULL,
|
||||
@ -353,7 +380,7 @@ explain_ExecutorEnd(QueryDesc *queryDesc)
|
||||
* reported. This isn't ideal but trying to do it here would
|
||||
* often result in duplication.
|
||||
*/
|
||||
ereport(LOG,
|
||||
ereport(auto_explain_log_level,
|
||||
(errmsg("duration: %.3f ms plan:\n%s",
|
||||
msec, es->str->data),
|
||||
errhidestmt(true)));
|
||||
|
@ -187,6 +187,27 @@ LOAD 'auto_explain';
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>
|
||||
<varname>auto_explain.log_level</varname> (<type>enum</type>)
|
||||
<indexterm>
|
||||
<primary><varname>auto_explain.log_level</> configuration parameter</primary>
|
||||
</indexterm>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
<varname>auto_explain.log_level</varname> selects the log level at which
|
||||
auto_explain will log the query plan.
|
||||
Valid values are <literal>DEBUG5</literal>, <literal>DEBUG4</literal>,
|
||||
<literal>DEBUG3</literal>, <literal>DEBUG2</literal>,
|
||||
<literal>DEBUG1</literal>, <literal>INFO</literal>,
|
||||
<literal>NOTICE</literal>, <literal>WARNING</literal>,
|
||||
and <literal>LOG</literal>. The default is <literal>LOG</literal>.
|
||||
Only superusers can change this setting.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>
|
||||
<varname>auto_explain.log_nested_statements</varname> (<type>boolean</type>)
|
||||
|
Loading…
Reference in New Issue
Block a user