]> xenbits.xensource.com Git - libvirt.git/commitdiff
virlog: Split parsing and setting priority
authorErik Skultety <eskultet@redhat.com>
Mon, 21 Mar 2016 13:35:37 +0000 (14:35 +0100)
committerErik Skultety <eskultet@redhat.com>
Mon, 10 Oct 2016 06:27:25 +0000 (08:27 +0200)
Handling of outputs and filters has been changed in a way that splits
parsing and defining. Do the same thing for logging priority as well, this
however, doesn't need much of a preparation.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
src/util/virlog.c
tests/eventtest.c

index 722a710d452b912835e91b6c7c92817b57c4ac96..14ee7010f0bdbace367ee2323f2dbf606f7bcfdd 100644 (file)
@@ -220,7 +220,9 @@ int
 virLogSetDefaultPriority(virLogPriority priority)
 {
     if ((priority < VIR_LOG_DEBUG) || (priority > VIR_LOG_ERROR)) {
-        VIR_WARN("Ignoring invalid log level setting.");
+        virReportError(VIR_ERR_INVALID_ARG,
+                       _("Failed to set logging priority, argument '%u' is "
+                         "invalid"), priority);
         return -1;
     }
     if (virLogInitialize() < 0)
@@ -1141,34 +1143,33 @@ virLogGetNbOutputs(void)
 
 /**
  * virLogParseDefaultPriority:
- * @priority: string defining the desired logging level
+ * @priority: string defining the desired logging level (either a numeric or a
+ *            word form, see below)
  *
- * Parses and sets the default log priority level. It can take a string or
- * number corresponding to the following levels:
- *    1: DEBUG
- *    2: INFO
- *    3: WARNING
- *    4: ERROR
+ * Parses the desired log priority level. The input @priority shall conform to
+ * one of the following levels:
+ *    1 = DEBUG
+ *    2 = INFO
+ *    3 = WARNING
+ *    4 = ERROR
  *
- * Returns 0 if successful, -1 in case of error.
+ *
+ * Returns the corresponding priority enum on success, -1 in case of error. A
+ * call to virLogSetDefaultPriority should be issued upon returning from this
+ * function.
  */
 int
 virLogParseDefaultPriority(const char *priority)
 {
-    int ret = -1;
-
     if (STREQ(priority, "1") || STREQ(priority, "debug"))
-        ret = virLogSetDefaultPriority(VIR_LOG_DEBUG);
+        return VIR_LOG_DEBUG;
     else if (STREQ(priority, "2") || STREQ(priority, "info"))
-        ret = virLogSetDefaultPriority(VIR_LOG_INFO);
+        return VIR_LOG_INFO;
     else if (STREQ(priority, "3") || STREQ(priority, "warning"))
-        ret = virLogSetDefaultPriority(VIR_LOG_WARN);
+        return VIR_LOG_WARN;
     else if (STREQ(priority, "4") || STREQ(priority, "error"))
-        ret = virLogSetDefaultPriority(VIR_LOG_ERROR);
-    else
-        VIR_WARN("Ignoring invalid log level setting");
-
-    return ret;
+        return VIR_LOG_ERROR;
+    return -1;
 }
 
 
@@ -1188,7 +1189,7 @@ virLogSetFromEnv(void)
 
     debugEnv = virGetEnvAllowSUID("LIBVIRT_DEBUG");
     if (debugEnv && *debugEnv)
-        virLogParseDefaultPriority(debugEnv);
+        virLogSetDefaultPriority(virLogParseDefaultPriority(debugEnv));
     debugEnv = virGetEnvAllowSUID("LIBVIRT_LOG_FILTERS");
     if (debugEnv && *debugEnv)
         virLogSetFilters(debugEnv);
index 4b62f3426b987b35433632d72852b551e063678b..011bedc33f309bd0e63e636b39f5c8782005414c 100644 (file)
@@ -311,7 +311,8 @@ mymain(void)
     if (virThreadInitialize() < 0)
         return EXIT_FAILURE;
     char *debugEnv = getenv("LIBVIRT_DEBUG");
-    if (debugEnv && *debugEnv && (virLogParseDefaultPriority(debugEnv) == -1)) {
+    if (debugEnv && *debugEnv &&
+        (virLogSetDefaultPriority(virLogParseDefaultPriority(debugEnv)) < 0)) {
         fprintf(stderr, "Invalid log level setting.\n");
         return EXIT_FAILURE;
     }