]> xenbits.xensource.com Git - libvirt.git/commitdiff
virlog: Introduce virLogFilterNew
authorErik Skultety <eskultet@redhat.com>
Fri, 8 Jul 2016 12:15:43 +0000 (14:15 +0200)
committerErik Skultety <eskultet@redhat.com>
Mon, 10 Oct 2016 06:27:24 +0000 (08:27 +0200)
This method allocates a new filter object which it then returns back to caller.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
src/libvirt_private.syms
src/util/virlog.c
src/util/virlog.h

index 04adf6c0af3bc6d13567c5ad952ec6070cd3a6af..da44c2f31e151d74eae5889d5a3466668994ae7c 100644 (file)
@@ -1873,6 +1873,7 @@ virLogDefineFilter;
 virLogDefineOutput;
 virLogFilterFree;
 virLogFilterListFree;
+virLogFilterNew;
 virLogGetDefaultPriority;
 virLogGetFilters;
 virLogGetNbFilters;
index 9764f1c1f0226416ddafc0b41817b3d310d2a291..2957b8c1b62a2fb7c4e9aa2e9eaa44f8436c694d 100644 (file)
@@ -1601,3 +1601,51 @@ virLogOutputNew(virLogOutputFunc f,
 
     return ret;
 }
+
+
+/**
+ * virLogFilterNew:
+ * @match: the pattern to match
+ * @priority: the priority to give to messages matching the pattern
+ * @flags: extra flags, see virLogFilterFlags enum
+ *
+ * Allocates and returns a new log filter object. The object has to be later
+ * defined, so that the pattern will be taken into account when executing the
+ * log filters (to select or reject a particular message) on messages.
+ *
+ * The filter defines a rules that will apply only to messages matching
+ * the pattern (currently if @match is a substring of the message category)
+ *
+ * Returns a reference to a newly created filter that needs to be defined using
+ * virLogDefineFilters, or NULL in case of an error.
+ */
+virLogFilterPtr
+virLogFilterNew(const char *match,
+                virLogPriority priority,
+                unsigned int flags)
+{
+    virLogFilterPtr ret = NULL;
+    char *mdup = 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"),
+                       priority);
+        return NULL;
+    }
+
+    if (VIR_STRDUP_QUIET(mdup, match) < 0)
+        return NULL;
+
+    if (VIR_ALLOC_QUIET(ret) < 0) {
+        VIR_FREE(mdup);
+        return NULL;
+    }
+
+    ret->match = mdup;
+    ret->priority = priority;
+    ret->flags = flags;
+
+    return ret;
+}
index 75bc5ba65abe7bf21b019dfc722f21c6dfc8911c..a33553328a2c9ddb640519d6ce5dda0cae11d1b2 100644 (file)
@@ -232,5 +232,8 @@ virLogOutputPtr virLogOutputNew(virLogOutputFunc f,
                                 virLogPriority priority,
                                 virLogDestination dest,
                                 const char *name) ATTRIBUTE_NONNULL(1);
+virLogFilterPtr virLogFilterNew(const char *match,
+                                virLogPriority priority,
+                                unsigned int flags) ATTRIBUTE_NONNULL(1);
 
 #endif