log: new methods to check if a given logging level is enabled

There are certain cases where we perform a lot of data processing just
for logging purposes. Having methods that let us know whether a given
log level will be printed before doing all that data processing is useful.
This commit is contained in:
Aleksander Morgado
2022-09-13 12:09:58 +00:00
parent afb89bb78f
commit 3592d98e5b
2 changed files with 24 additions and 11 deletions

View File

@@ -213,6 +213,12 @@ log_backend_systemd_journal (const char *loc,
}
#endif
gboolean
mm_log_check_level_enabled (MMLogLevel level)
{
return (log_level & level);
}
void
_mm_log (gpointer obj,
const gchar *module,
@@ -225,7 +231,7 @@ _mm_log (gpointer obj,
va_list args;
GTimeVal tv;
if (!(log_level & level))
if (!mm_log_check_level_enabled (level))
return;
if (g_once_init_enter (&msgbuf_once)) {

View File

@@ -50,6 +50,12 @@ typedef enum {
# define mm_dbg(...) mm_obj_dbg (NULL, ## __VA_ARGS__ )
#endif
#define mm_log_err_enabled() mm_log_check_level_enabled (MM_LOG_LEVEL_ERR)
#define mm_log_warn_enabled() mm_log_check_level_enabled (MM_LOG_LEVEL_WARN)
#define mm_log_msg_enabled() mm_log_check_level_enabled (MM_LOG_LEVEL_MSG)
#define mm_log_info_enabled() mm_log_check_level_enabled (MM_LOG_LEVEL_INFO)
#define mm_log_debug_enabled() mm_log_check_level_enabled (MM_LOG_LEVEL_DEBUG)
void _mm_log (gpointer obj,
const gchar *module,
const gchar *loc,
@@ -67,6 +73,7 @@ gboolean mm_log_setup (const gchar *level,
gboolean rel_ts,
gboolean show_personal_info,
GError **error);
gboolean mm_log_check_level_enabled (MMLogLevel level);
void mm_log_shutdown (void);
/* Helper used when printing a string that may be personal