void
cr_setup_logging(gboolean quiet, gboolean verbose)
{
- g_log_set_default_handler (cr_log_fn, NULL);
-
if (quiet) {
// Quiet mode
- GLogLevelFlags levels = G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO |
- G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_WARNING;
- g_log_set_handler(NULL, levels, cr_null_log_fn, NULL);
- g_log_set_handler("C_CREATEREPOLIB", levels, cr_null_log_fn, NULL);
+ GLogLevelFlags hidden_levels = G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO |
+ G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_WARNING;
+ g_log_set_default_handler (cr_log_fn, GINT_TO_POINTER(hidden_levels));
} else if (verbose) {
// Verbose mode
- GLogLevelFlags levels = G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO |
- G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_WARNING;
- g_log_set_handler(NULL, levels, cr_log_fn, NULL);
- g_log_set_handler("C_CREATEREPOLIB", levels, cr_log_fn, NULL);
+ g_log_set_default_handler (cr_log_fn, GINT_TO_POINTER(0));
} else {
// Standard mode
- GLogLevelFlags levels = G_LOG_LEVEL_DEBUG;
- g_log_set_handler(NULL, levels, cr_null_log_fn, NULL);
- g_log_set_handler("C_CREATEREPOLIB", levels, cr_null_log_fn, NULL);
+ GLogLevelFlags hidden_levels = G_LOG_LEVEL_DEBUG;
+ g_log_set_default_handler (cr_log_fn, GINT_TO_POINTER(hidden_levels));
}
}
cr_log_fn(const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *message,
- G_GNUC_UNUSED gpointer user_data)
+ gpointer user_data)
{
+ gint hidden_log_levels = GPOINTER_TO_INT(user_data);
+ if (log_level & hidden_log_levels)
+ return;
switch(log_level) {
case G_LOG_LEVEL_ERROR:
if (log_domain) g_printerr("%s: ", log_domain);