diff options
author | Thomas Haller <thaller@redhat.com> | 2013-11-01 13:14:33 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2013-11-22 14:38:59 +0100 |
commit | 5b2539c6b723a5569d387e17e3d754c4b9497e3b (patch) | |
tree | 2c46807af6b3ab956f090c5741cfb21339dc3003 | |
parent | 68669fce01a08264b874d23c7dcdca4fb797c2d6 (diff) | |
download | NetworkManager-th/review/danw/bgo699387-logging.tar.gz |
core: log lazily only after checking for nm_logging_enabledth/review/danw/bgo699387-logging
Change the nm_log_* macros, to check first, whether the log level
is enabled. This has the benefit, that the logging arguments have not
to be evaluated, if logging is disabled.
With this change, you must ensure, that calling any logging function
is side-effect-free. For example:
nm_log_debug ("This is a bug %s, %d", has_side_effect (), ++i);
is a bug.
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r-- | src/logging/nm-logging.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/logging/nm-logging.h b/src/logging/nm-logging.h index 4aacfc5adc..9d06e0fddf 100644 --- a/src/logging/nm-logging.h +++ b/src/logging/nm-logging.h @@ -88,16 +88,32 @@ GQuark nm_logging_error_quark (void); #define nm_log_err(domain, ...) \ - _nm_log (G_STRLOC, G_STRFUNC, domain, LOGL_ERR, ## __VA_ARGS__ ) + G_STMT_START { \ + if (nm_logging_enabled (LOGL_ERR, domain)) { \ + _nm_log (G_STRLOC, G_STRFUNC, domain, LOGL_ERR, ## __VA_ARGS__ ); \ + } \ + } G_STMT_END #define nm_log_warn(domain, ...) \ - _nm_log (G_STRLOC, G_STRFUNC, domain, LOGL_WARN, ## __VA_ARGS__ ) + G_STMT_START { \ + if (nm_logging_enabled (LOGL_WARN, domain)) { \ + _nm_log (G_STRLOC, G_STRFUNC, domain, LOGL_WARN, ## __VA_ARGS__ ); \ + } \ + } G_STMT_END #define nm_log_info(domain, ...) \ - _nm_log (G_STRLOC, G_STRFUNC, domain, LOGL_INFO, ## __VA_ARGS__ ) + G_STMT_START { \ + if (nm_logging_enabled (LOGL_INFO, domain)) { \ + _nm_log (G_STRLOC, G_STRFUNC, domain, LOGL_INFO, ## __VA_ARGS__ ); \ + } \ + } G_STMT_END #define nm_log_dbg(domain, ...) \ - _nm_log (G_STRLOC, G_STRFUNC, domain, LOGL_DEBUG, ## __VA_ARGS__ ) + G_STMT_START { \ + if (nm_logging_enabled (LOGL_DEBUG, domain)) { \ + _nm_log (G_STRLOC, G_STRFUNC, domain, LOGL_DEBUG, ## __VA_ARGS__ ); \ + } \ + } G_STMT_END #define nm_log(domain, level, ...) \ _nm_log (G_STRLOC, G_STRFUNC, domain, level, ## __VA_ARGS__ ) |