]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Implement better logging for deploypkg plugin if vmware-imc cannot be created.
authorOliver Kurth <okurth@vmware.com>
Fri, 20 Dec 2019 20:25:52 +0000 (12:25 -0800)
committerOliver Kurth <okurth@vmware.com>
Fri, 20 Dec 2019 20:25:52 +0000 (12:25 -0800)
If vmware-imc cannot be created, log the error message and also redirect the
customization log to tools log.

open-vm-tools/services/plugins/deployPkg/deployPkgLog.c

index f02585507e632de4ad08e577b56a90853e8b6abf..da2a93f8ade9ad5c14970f915c9dddcb57508b57 100644 (file)
@@ -37,6 +37,8 @@
 #include "win32Access.h"
 #endif
 
+#define G_LOG_DOMAIN "deployPkg"
+
 static FILE* _file = NULL;
 
 
@@ -87,7 +89,13 @@ DeployPkgLog_Open()
          (void)Win32Access_SetFileOwnerRW(logPath);
 #endif
          DeployPkgLog_Log(log_debug, "## Starting deploy pkg operation");
+      } else {
+         g_debug("%s: failed to open DeployPkg log file: %s\n",
+                   __FUNCTION__, logPath);
       }
+   } else {
+      g_debug("%s: failed to create DeployPkg log directory: %s\n",
+                   __FUNCTION__, logPath);
    }
 }
 
@@ -125,6 +133,8 @@ DeployPkgLog_Close()
  * DeployPkgLog_Log --
  *
  *    If the log file was opened successfully, write to it.
+ *    Otherwise call the glib logger, messages are logged
+ *    per tools logging configuration.
  *
  * Results:
  *    None.
@@ -143,37 +153,56 @@ DeployPkgLog_Log(int level,          // IN
    va_list args;
    gchar *tstamp;
    const char *logLevel;
+   GLogLevelFlags glogLevel;
+   va_start(args, fmtstr);
 
-   /* Make sure init succeeded */
-   if (_file == NULL) {
-      return;
-   }
+   if (_file != NULL) {
+      switch (level) {
+         case log_debug:
+            logLevel = "debug";
+            break;
+         case log_info:
+            logLevel = "info";
+            break;
+         case log_warning:
+            logLevel = "warning";
+            break;
+         case log_error:
+            logLevel = "error";
+            break;
+         default:
+            logLevel = "unknown";
+            break;
+      }
+
+      tstamp = VMTools_GetTimeAsString();
+      fprintf(_file, "[%s] [%8s] ",
+              (tstamp != NULL) ? tstamp : "no time", logLevel);
+      vfprintf(_file, fmtstr, args);
+      fprintf(_file, "\n");
+      g_free(tstamp);
+   } else {
+      switch (level) {
+         case log_debug:
+            glogLevel = G_LOG_LEVEL_DEBUG;
+            break;
+         case log_info:
+            glogLevel = G_LOG_LEVEL_INFO;
+            break;
+         case log_warning:
+            glogLevel = G_LOG_LEVEL_WARNING;
+            break;
+         case log_error:
+            glogLevel = G_LOG_LEVEL_ERROR;
+            break;
+         default:
+            glogLevel = G_LOG_LEVEL_INFO;
+            break;
+      }
 
-   switch (level) {
-      case log_debug:
-         logLevel = "debug";
-         break;
-      case log_info:
-         logLevel = "info";
-         break;
-      case log_warning:
-         logLevel = "warning";
-         break;
-      case log_error:
-         logLevel = "error";
-         break;
-      default:
-         logLevel = "unknown";
-         break;
+      g_logv(G_LOG_DOMAIN, glogLevel, fmtstr, args);
    }
 
-   va_start(args, fmtstr);
-   tstamp = VMTools_GetTimeAsString();
-   fprintf(_file, "[%s] [%8s] ",
-           (tstamp != NULL) ? tstamp : "no time", logLevel);
-   vfprintf(_file, fmtstr, args);
-   fprintf(_file, "\n");
-   g_free(tstamp);
    va_end(args);
 }