logging: support an "OFF" logging level
The only way to disable logging for a domain entirely is to omit the domain from the "domains" list. For example: "level=INFO, domains=PLATFORM,..." Now add an explicit level "OFF" to facilitate configuration like: "level=INFO, domains=ALL,WIFI_SCAN:OFF" It also supports "level=OFF, domains=PLATFORM:INFO" but this is for the most part equivalent to "level=INFO, domains=PLATFORM"
This commit is contained in:
@@ -306,7 +306,7 @@ _nmcli_compl_ARGS()
|
|||||||
case "${words[0]}" in
|
case "${words[0]}" in
|
||||||
level)
|
level)
|
||||||
if [[ "${#words[@]}" -eq 2 ]]; then
|
if [[ "${#words[@]}" -eq 2 ]]; then
|
||||||
_nmcli_list "ERR WARN INFO DEBUG TRACE"
|
_nmcli_list "OFF ERR WARN INFO DEBUG TRACE"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
@@ -396,7 +396,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
|
|||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>level</varname></term>
|
<term><varname>level</varname></term>
|
||||||
<listitem><para>The default logging verbosity level.
|
<listitem><para>The default logging verbosity level.
|
||||||
One of <literal>ERR</literal>,
|
One of <literal>OFF</literal>, <literal>ERR</literal>,
|
||||||
<literal>WARN</literal>, <literal>INFO</literal>,
|
<literal>WARN</literal>, <literal>INFO</literal>,
|
||||||
<literal>DEBUG</literal>, <literal>TRACE</literal>. The ERR
|
<literal>DEBUG</literal>, <literal>TRACE</literal>. The ERR
|
||||||
level logs only critical errors. WARN logs warnings that may
|
level logs only critical errors. WARN logs warnings that may
|
||||||
@@ -419,7 +419,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
|
|||||||
ALL, DEFAULT, DHCP, IP.</para>
|
ALL, DEFAULT, DHCP, IP.</para>
|
||||||
<para>You can specify per-domain log level overrides by
|
<para>You can specify per-domain log level overrides by
|
||||||
adding a colon and a log level to any domain. E.g.,
|
adding a colon and a log level to any domain. E.g.,
|
||||||
"<literal>WIFI:DEBUG</literal>".</para></listitem>
|
"<literal>WIFI:DEBUG,WIFI_SCAN:OFF</literal>".</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<para>Domain descriptions:
|
<para>Domain descriptions:
|
||||||
|
@@ -53,7 +53,7 @@ nm_log_handler (const gchar *log_domain,
|
|||||||
|
|
||||||
static NMLogLevel log_level = LOGL_INFO;
|
static NMLogLevel log_level = LOGL_INFO;
|
||||||
static char *log_domains;
|
static char *log_domains;
|
||||||
static NMLogDomain logging[_LOGL_N];
|
static NMLogDomain logging[_LOGL_N_REAL];
|
||||||
static gboolean logging_set_up;
|
static gboolean logging_set_up;
|
||||||
enum {
|
enum {
|
||||||
LOG_BACKEND_GLIB,
|
LOG_BACKEND_GLIB,
|
||||||
@@ -82,6 +82,7 @@ static const LogLevelDesc level_desc[_LOGL_N] = {
|
|||||||
[LOGL_INFO] = { "INFO", "<info>", LOG_INFO, G_LOG_LEVEL_MESSAGE, FALSE },
|
[LOGL_INFO] = { "INFO", "<info>", LOG_INFO, G_LOG_LEVEL_MESSAGE, FALSE },
|
||||||
[LOGL_WARN] = { "WARN", "<warn>", LOG_WARNING, G_LOG_LEVEL_WARNING, FALSE },
|
[LOGL_WARN] = { "WARN", "<warn>", LOG_WARNING, G_LOG_LEVEL_WARNING, FALSE },
|
||||||
[LOGL_ERR] = { "ERR", "<error>", LOG_ERR, G_LOG_LEVEL_WARNING, TRUE },
|
[LOGL_ERR] = { "ERR", "<error>", LOG_ERR, G_LOG_LEVEL_WARNING, TRUE },
|
||||||
|
[_LOGL_OFF] = { "OFF", NULL, 0, 0, FALSE },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const LogDesc domain_descs[] = {
|
static const LogDesc domain_descs[] = {
|
||||||
@@ -253,11 +254,13 @@ nm_logging_setup (const char *level,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < domain_log_level; i++)
|
for (i = 0; i < G_N_ELEMENTS (new_logging); i++) {
|
||||||
|
if (i < domain_log_level)
|
||||||
new_logging[i] &= ~bits;
|
new_logging[i] &= ~bits;
|
||||||
for (i = domain_log_level; i < _LOGL_N; i++)
|
else
|
||||||
new_logging[i] |= bits;
|
new_logging[i] |= bits;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
g_strfreev (tmp);
|
g_strfreev (tmp);
|
||||||
|
|
||||||
if (log_domains != (char *)domains) {
|
if (log_domains != (char *)domains) {
|
||||||
|
@@ -90,7 +90,11 @@ typedef enum { /*< skip >*/
|
|||||||
LOGL_WARN,
|
LOGL_WARN,
|
||||||
LOGL_ERR,
|
LOGL_ERR,
|
||||||
|
|
||||||
_LOGL_N, /* the number of logging levels */
|
_LOGL_N_REAL, /* the number of actual logging levels */
|
||||||
|
|
||||||
|
_LOGL_OFF = _LOGL_N_REAL, /* special logging level that is always disabled. */
|
||||||
|
|
||||||
|
_LOGL_N, /* the number of logging levels including "OFF" */
|
||||||
} NMLogLevel;
|
} NMLogLevel;
|
||||||
|
|
||||||
#define nm_log_err(domain, ...) nm_log (LOGL_ERR, (domain), __VA_ARGS__)
|
#define nm_log_err(domain, ...) nm_log (LOGL_ERR, (domain), __VA_ARGS__)
|
||||||
|
Reference in New Issue
Block a user