]> xenbits.xensource.com Git - libvirt.git/commitdiff
virlog: Introduce virLogSetOutputs
authorErik Skultety <eskultet@redhat.com>
Tue, 8 Mar 2016 12:37:56 +0000 (13:37 +0100)
committerErik Skultety <eskultet@redhat.com>
Mon, 10 Oct 2016 06:27:25 +0000 (08:27 +0200)
This API is the entry point to output modification of the logger. Currently,
everything is done by virLogParseAndDefineOutputs. Parsing and defining will be
split into two operations both handled by this method transparently.

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

index 3c352cfe7edbc6663495b583acdf8cabb1427e3f..77fda3cab782fef87272716d56ade957a4398f04 100644 (file)
@@ -1899,6 +1899,7 @@ virLogProbablyLogMessage;
 virLogReset;
 virLogSetDefaultPriority;
 virLogSetFromEnv;
+virLogSetOutputs;
 virLogUnlock;
 virLogVMessage;
 
index 25b1fcb5d1340282a7399bfdd291f0ce4cfea062..377a7c1c629419ae76e18a17a56f454f781d6ecb 100644 (file)
@@ -2149,3 +2149,34 @@ virLogParseFilters(const char *src, virLogFilterPtr **filters)
     virStringFreeList(strings);
     return ret;
 }
+
+/**
+ * virLogSetOutputs:
+ * @outputs: string defining a (set of) output(s)
+ *
+ * Replaces the current set of defined outputs with a new set of outputs.
+ *
+ * Returns 0 on success or -1 in case of an error.
+ */
+int
+virLogSetOutputs(const char *src)
+{
+    int ret = -1;
+    int noutputs = 0;
+    virLogOutputPtr *outputs = NULL;
+
+    if (virLogInitialize() < 0)
+        return -1;
+
+    if ((noutputs = virLogParseOutputs(src, &outputs)) < 0)
+        goto cleanup;
+
+    if (virLogDefineOutputs(outputs, noutputs) < 0)
+        goto cleanup;
+
+    outputs = NULL;
+    ret = 0;
+ cleanup:
+    virLogOutputListFree(outputs, noutputs);
+    return ret;
+}
index 1f97238114e9636a995314a54eaf599f9eeb000e..f3b8f8b63f35bb1ceafa33c700017bea9b3522cd 100644 (file)
@@ -197,6 +197,7 @@ void virLogOutputFree(virLogOutputPtr output);
 void virLogOutputListFree(virLogOutputPtr *list, int count);
 void virLogFilterFree(virLogFilterPtr filter);
 void virLogFilterListFree(virLogFilterPtr *list, int count);
+int virLogSetOutputs(const char *outputs) ATTRIBUTE_NONNULL(1);
 
 /*
  * Internal logging API