mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-24 18:55:04 +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_triggers = false;
|
||||||
static bool auto_explain_log_timing = true;
|
static bool auto_explain_log_timing = true;
|
||||||
static int auto_explain_log_format = EXPLAIN_FORMAT_TEXT;
|
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 bool auto_explain_log_nested_statements = false;
|
||||||
static double auto_explain_sample_rate = 1;
|
static double auto_explain_sample_rate = 1;
|
||||||
|
|
||||||
@ -39,6 +40,20 @@ static const struct config_enum_entry format_options[] = {
|
|||||||
{NULL, 0, false}
|
{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 */
|
/* Current nesting depth of ExecutorRun calls */
|
||||||
static int nesting_level = 0;
|
static int nesting_level = 0;
|
||||||
|
|
||||||
@ -141,6 +156,18 @@ _PG_init(void)
|
|||||||
NULL,
|
NULL,
|
||||||
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",
|
DefineCustomBoolVariable("auto_explain.log_nested_statements",
|
||||||
"Log nested statements.",
|
"Log nested statements.",
|
||||||
NULL,
|
NULL,
|
||||||
@ -353,7 +380,7 @@ explain_ExecutorEnd(QueryDesc *queryDesc)
|
|||||||
* reported. This isn't ideal but trying to do it here would
|
* reported. This isn't ideal but trying to do it here would
|
||||||
* often result in duplication.
|
* often result in duplication.
|
||||||
*/
|
*/
|
||||||
ereport(LOG,
|
ereport(auto_explain_log_level,
|
||||||
(errmsg("duration: %.3f ms plan:\n%s",
|
(errmsg("duration: %.3f ms plan:\n%s",
|
||||||
msec, es->str->data),
|
msec, es->str->data),
|
||||||
errhidestmt(true)));
|
errhidestmt(true)));
|
||||||
|
@ -187,6 +187,27 @@ LOAD 'auto_explain';
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</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>
|
<varlistentry>
|
||||||
<term>
|
<term>
|
||||||
<varname>auto_explain.log_nested_statements</varname> (<type>boolean</type>)
|
<varname>auto_explain.log_nested_statements</varname> (<type>boolean</type>)
|
||||||
|
Loading…
Reference in New Issue
Block a user