# Multiple filters can be defined in a single @filters, they just need to be
# separated by spaces. Note that libvirt performs "first" match, i.e. if
# there are concurrent filters, the first one that matches will be applied,
-# given the order in log_filters with the exception of a wildcard filter, since
-# that's only taken into account if no other filter has matched, so
-# "4:* 1:util.pci" and "1:util.pci 4:*" are equivalent definitions.
+# given the order in log_filters.
#
# e.g. to only get warning or errors from the remote layer and only errors
# from the event layer:
return 0;
}
-/* virLogFiltersFind:
- * @filters: haystack
- * @nfilters: haystack size
- * @key1: primary string 'needle'
- * @key2: secondary integer 'needle'
- *
- * Performs "first match" search on the input set of filters, using @key1
- * (string) and @key2 (integer) as primary and secondary keys respectively.
- * Secondary key is only considered if primary key wasn't provided.
- *
- * Returns a pointer to the matched object or NULL if no match was found.
- */
-static virLogFilterPtr
-virLogFiltersFind(virLogFilterPtr *filters,
- size_t nfilters,
- const char *key1,
- unsigned int key2)
-{
- size_t i;
-
- if (!key1 && key2 == 0)
- return NULL;
-
- for (i = 0; i < nfilters; i++) {
- if ((key1 && STREQ(key1, filters[i]->match)) ||
- filters[i]->flags == key2)
- return filters[i];
- }
-
- return NULL;
-}
-
static void
virLogSourceUpdate(virLogSourcePtr source)
virLogFilterPtr ret = NULL;
char *mdup = NULL;
- virCheckFlags(VIR_LOG_STACK_TRACE |
- VIR_LOG_WILDCARD, NULL);
+ virCheckFlags(VIR_LOG_STACK_TRACE, NULL);
if (priority < VIR_LOG_DEBUG || priority > VIR_LOG_ERROR) {
virReportError(VIR_ERR_INVALID_ARG, _("Invalid log priority %d"),
int
virLogDefineFilters(virLogFilterPtr *filters, size_t nfilters)
{
- virLogFilterPtr rc;
-
if (virLogInitialize() < 0)
return -1;
virLogResetFilters();
virLogFilters = filters;
virLogNbFilters = nfilters;
-
- /* if there's a wildcard filter, update default priority */
- if ((rc = virLogFiltersFind(filters, nfilters, NULL, VIR_LOG_WILDCARD)))
- virLogDefaultPriority = rc->priority;
virLogUnlock();
return 0;
match++;
}
- if (STREQ(match, "*"))
- flags |= VIR_LOG_WILDCARD;
-
/* match string cannot comprise just from a single '+' */
if (!*match) {
virReportError(VIR_ERR_INVALID_ARG,