summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2013-11-01 13:14:33 +0100
committerThomas Haller <thaller@redhat.com>2013-11-22 14:38:59 +0100
commit5b2539c6b723a5569d387e17e3d754c4b9497e3b (patch)
tree2c46807af6b3ab956f090c5741cfb21339dc3003
parent68669fce01a08264b874d23c7dcdca4fb797c2d6 (diff)
downloadNetworkManager-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.h24
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__ )