static struct event_filter *global_debug_log_filter = NULL;
static struct event_filter *global_debug_send_filter = NULL;
+static struct event_filter *global_core_log_filter = NULL;
#undef e_error
void e_error(struct event *event,
event_filter_match_source(global_debug_log_filter, event,
source_filename, source_linenum, &ctx))
return TRUE;
+ if (global_core_log_filter != NULL &&
+ event_filter_match_source(global_core_log_filter, event,
+ source_filename, source_linenum, &ctx))
+ return TRUE;
return FALSE;
}
str_vprintfa(log_prefix_str, fmt, args);
event_send(event, &ctx, "%s", str_c(log_prefix_str));
}
+ if (global_core_log_filter != NULL &&
+ event_filter_match_source(global_core_log_filter, event,
+ event->source_filename,
+ event->source_linenum, &ctx))
+ abort();
errno = old_errno;
}
if (global_debug_send_filter != NULL)
event_filter_unref(&global_debug_send_filter);
}
+
+void event_set_global_core_log_filter(struct event_filter *filter)
+{
+ event_unset_global_core_log_filter();
+ global_core_log_filter = filter;
+ event_filter_ref(global_core_log_filter);
+}
+
+struct event_filter *event_get_global_core_log_filter(void)
+{
+ return global_core_log_filter;
+}
+
+void event_unset_global_core_log_filter(void)
+{
+ if (global_core_log_filter != NULL)
+ event_filter_unref(&global_core_log_filter);
+}
/* Unset global debug send filter, if one exists. */
void event_unset_global_debug_send_filter(void);
+/* Set/replace the global core filter, which abort()s on matching events. */
+void event_set_global_core_log_filter(struct event_filter *filter);
+/* Return the current global core filter. */
+struct event_filter *event_get_global_core_log_filter(void);
+/* Unset the global core filter, if one exists. */
+void event_unset_global_core_log_filter(void);
+
#endif