[libvirt] [PATCH 5/9] Include filename explicitly in logging APIs

Daniel P. Berrange berrange at redhat.com
Thu Sep 27 16:44:20 UTC 2012


From: "Daniel P. Berrange" <berrange at redhat.com>

Currently the logging APIs have a 'const char *category' parameter
which indicates where the log message comes from. This is typically
a combination of the __FILE__ string and other prefix. Split the
__FILE__ off into a dedicated parameter so it can passed to the
log outputs

Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
---
 src/internal.h                     |  8 ++++----
 src/node_device/node_device_udev.c |  2 +-
 src/util/logging.c                 | 35 ++++++++++++++++++++------------
 src/util/logging.h                 | 41 ++++++++++++++++++++------------------
 src/util/viraudit.c                |  4 ++--
 src/util/virterror.c               |  4 ++--
 tests/testutils.c                  |  5 +++--
 7 files changed, 56 insertions(+), 43 deletions(-)

diff --git a/src/internal.h b/src/internal.h
index 8037a4a..a1d46b9 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -349,15 +349,15 @@
 
 #  define PROBE_EXPAND(NAME, ARGS) NAME(ARGS)
 #  define PROBE(NAME, FMT, ...)                              \
-    VIR_DEBUG_INT("trace." __FILE__ , __func__, __LINE__,    \
+    VIR_DEBUG_INT("trace", __FILE__ , __LINE__, __func__,    \
                   #NAME ": " FMT, __VA_ARGS__);              \
-    if (LIBVIRT_ ## NAME ## _ENABLED()) {                   \
-        PROBE_EXPAND(LIBVIRT_ ## NAME,                      \
+    if (LIBVIRT_ ## NAME ## _ENABLED()) {                    \
+        PROBE_EXPAND(LIBVIRT_ ## NAME,                       \
                      VIR_ADD_CASTS(__VA_ARGS__));            \
     }
 # else
 #  define PROBE(NAME, FMT, ...)                              \
-    VIR_DEBUG_INT("trace." __FILE__, __func__, __LINE__,     \
+    VIR_DEBUG_INT("trace", __FILE__, __LINE__, __func__,     \
                   #NAME ": " FMT, __VA_ARGS__);
 # endif
 
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index ba17010..2104bd3 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -358,7 +358,7 @@ static void udevLogFunction(struct udev *udev ATTRIBUTE_UNUSED,
                             const char *fmt,
                             va_list args)
 {
-    VIR_ERROR_INT(file, fn, line, fmt, args);
+    VIR_ERROR_INT("library", file, line, fn, fmt, args);
 }
 
 
diff --git a/src/util/logging.c b/src/util/logging.c
index 5b29646..ceab64d 100644
--- a/src/util/logging.c
+++ b/src/util/logging.c
@@ -100,8 +100,9 @@ static int virLogResetFilters(void);
 static int virLogResetOutputs(void);
 static void virLogOutputToFd(const char *category,
                              virLogPriority priority,
-                             const char *funcname,
+                             const char *filename,
                              size_t linenr,
+                             const char *funcname,
                              const char *timestamp,
                              unsigned int flags,
                              const char *rawstr,
@@ -651,8 +652,8 @@ cleanup:
 
 static int
 virLogFormatString(char **msg,
-                   const char *funcname,
                    size_t linenr,
+                   const char *funcname,
                    virLogPriority priority,
                    const char *str)
 {
@@ -696,7 +697,7 @@ virLogVersionString(const char **rawmsg,
 #endif
 
     *rawmsg = LOG_VERSION_STRING;
-    return virLogFormatString(msg, NULL, 0, VIR_LOG_INFO, LOG_VERSION_STRING);
+    return virLogFormatString(msg, 0, NULL, VIR_LOG_INFO, LOG_VERSION_STRING);
 }
 
 
@@ -716,14 +717,17 @@ virLogVersionString(const char **rawmsg,
 void
 virLogMessage(const char *category,
               virLogPriority priority,
-              const char *funcname,
+              const char *filename,
               size_t linenr,
+              const char *funcname,
               unsigned int flags,
               const char *fmt, ...)
 {
     va_list ap;
     va_start(ap, fmt);
-    virLogVMessage(category, priority, funcname, linenr, flags, fmt, ap);
+    virLogVMessage(category, priority,
+                   filename, linenr, funcname,
+                   flags, fmt, ap);
     va_end(ap);
 }
 
@@ -744,8 +748,9 @@ virLogMessage(const char *category,
 void
 virLogVMessage(const char *category,
                virLogPriority priority,
-               const char *funcname,
+               const char *filename,
                size_t linenr,
+               const char *funcname,
                unsigned int flags,
                const char *fmt,
                va_list vargs)
@@ -786,7 +791,7 @@ virLogVMessage(const char *category,
         goto cleanup;
     }
 
-    ret = virLogFormatString(&msg, funcname, linenr, priority, str);
+    ret = virLogFormatString(&msg, linenr, funcname, priority, str);
     if (ret < 0)
         goto cleanup;
 
@@ -816,13 +821,14 @@ virLogVMessage(const char *category,
                 char *ver = NULL;
                 if (virLogVersionString(&rawver, &ver) >= 0)
                     virLogOutputs[i].f(category, VIR_LOG_INFO,
-                                       __func__, __LINE__,
+                                       __FILE__, __LINE__, __func__,
                                        timestamp, 0, rawver, ver,
                                        virLogOutputs[i].data);
                 VIR_FREE(ver);
                 virLogOutputs[i].logVersion = false;
             }
-            virLogOutputs[i].f(category, priority, funcname, linenr,
+            virLogOutputs[i].f(category, priority,
+                               filename, linenr, funcname,
                                timestamp, filterflags,
                                str, msg, virLogOutputs[i].data);
         }
@@ -833,13 +839,14 @@ virLogVMessage(const char *category,
             char *ver = NULL;
             if (virLogVersionString(&rawver, &ver) >= 0)
                 virLogOutputToFd(category, VIR_LOG_INFO,
-                                 __func__, __LINE__,
+                                 __FILE__, __LINE__, __func__,
                                  timestamp, 0, rawver, ver,
                                  (void *) STDERR_FILENO);
             VIR_FREE(ver);
             logVersionStderr = false;
         }
-        virLogOutputToFd(category, priority, funcname, linenr,
+        virLogOutputToFd(category, priority,
+                         filename, linenr, funcname,
                          timestamp, filterflags,
                          str, msg, (void *) STDERR_FILENO);
     }
@@ -876,8 +883,9 @@ virLogStackTraceToFd(int fd)
 static void
 virLogOutputToFd(const char *category ATTRIBUTE_UNUSED,
                  virLogPriority priority ATTRIBUTE_UNUSED,
-                 const char *funcname ATTRIBUTE_UNUSED,
+                 const char *filename ATTRIBUTE_UNUSED,
                  size_t linenr ATTRIBUTE_UNUSED,
+                 const char *funcname ATTRIBUTE_UNUSED,
                  const char *timestamp,
                  unsigned int flags,
                  const char *rawstr ATTRIBUTE_UNUSED,
@@ -961,8 +969,9 @@ virLogPrioritySyslog(virLogPriority priority)
 static void
 virLogOutputToSyslog(const char *category ATTRIBUTE_UNUSED,
                      virLogPriority priority,
-                     const char *funcname ATTRIBUTE_UNUSED,
+                     const char *filename ATTRIBUTE_UNUSED,
                      size_t linenr ATTRIBUTE_UNUSED,
+                     const char *funcname ATTRIBUTE_UNUSED,
                      const char *timestamp ATTRIBUTE_UNUSED,
                      unsigned int flags,
                      const char *rawstr ATTRIBUTE_UNUSED,
diff --git a/src/util/logging.h b/src/util/logging.h
index 6e1de5d..25e6a1c 100644
--- a/src/util/logging.h
+++ b/src/util/logging.h
@@ -31,8 +31,8 @@
  * defined at runtime from the libvirt daemon configuration file
  */
 # ifdef ENABLE_DEBUG
-#  define VIR_DEBUG_INT(category, f, l, ...)                            \
-    virLogMessage(category, VIR_LOG_DEBUG, f, l, 0, __VA_ARGS__)
+#  define VIR_DEBUG_INT(category, filename, linenr, funcname, ...)                            \
+    virLogMessage(category, VIR_LOG_DEBUG, filename, linenr, funcname, 0, __VA_ARGS__)
 # else
 /**
  * virLogEatParams:
@@ -44,25 +44,25 @@ static inline void virLogEatParams(const char *unused, ...)
     /* Silence gcc */
     unused = unused;
 }
-#  define VIR_DEBUG_INT(category, f, l, ...)    \
-    virLogEatParams(category, f, l, __VA_ARGS__)
+#  define VIR_DEBUG_INT(category, filename, linenr, funcname, ...)    \
+    virLogEatParams(category, filename, linenr, funcname, __VA_ARGS__)
 # endif /* !ENABLE_DEBUG */
 
-# define VIR_INFO_INT(category, f, l, ...)                              \
-    virLogMessage(category, VIR_LOG_INFO, f, l, 0, __VA_ARGS__)
-# define VIR_WARN_INT(category, f, l, ...)                              \
-    virLogMessage(category, VIR_LOG_WARN, f, l, 0, __VA_ARGS__)
-# define VIR_ERROR_INT(category, f, l, ...)                             \
-    virLogMessage(category, VIR_LOG_ERROR, f, l, 0, __VA_ARGS__)
+# define VIR_INFO_INT(category, filename, linenr, funcname, ...)                              \
+    virLogMessage(category, VIR_LOG_INFO, filename, linenr, funcname, 0, __VA_ARGS__)
+# define VIR_WARN_INT(category, filename, linenr, funcname, ...)                              \
+    virLogMessage(category, VIR_LOG_WARN, filename, linenr, funcname, 0, __VA_ARGS__)
+# define VIR_ERROR_INT(category, filename, linenr, funcname, ...)                             \
+    virLogMessage(category, VIR_LOG_ERROR, filename, linenr, funcname, 0, __VA_ARGS__)
 
 # define VIR_DEBUG(...)                                                 \
-        VIR_DEBUG_INT("file." __FILE__, __func__, __LINE__, __VA_ARGS__)
+        VIR_DEBUG_INT("file", __FILE__, __LINE__, __func__, __VA_ARGS__)
 # define VIR_INFO(...)                                                  \
-        VIR_INFO_INT("file." __FILE__, __func__, __LINE__, __VA_ARGS__)
+        VIR_INFO_INT("file", __FILE__, __LINE__, __func__, __VA_ARGS__)
 # define VIR_WARN(...)                                                  \
-        VIR_WARN_INT("file." __FILE__, __func__, __LINE__, __VA_ARGS__)
+        VIR_WARN_INT("file", __FILE__, __LINE__, __func__, __VA_ARGS__)
 # define VIR_ERROR(...)                                                 \
-        VIR_ERROR_INT("file." __FILE__, __func__, __LINE__, __VA_ARGS__)
+        VIR_ERROR_INT("file", __FILE__, __LINE__, __func__, __VA_ARGS__)
 
 /*
  * To be made public
@@ -98,8 +98,9 @@ typedef enum {
  */
 typedef void (*virLogOutputFunc) (const char *category,
                                   virLogPriority priority,
-                                  const char *funcname,
+                                  const char *filename,
                                   size_t linenr,
+                                  const char *funcname,
                                   const char *timestamp,
                                   unsigned int flags,
                                   const char *rawstr,
@@ -148,17 +149,19 @@ extern int virLogParseFilters(const char *filters);
 extern int virLogParseOutputs(const char *output);
 extern void virLogMessage(const char *category,
                           virLogPriority priority,
-                          const char *funcname,
+                          const char *filename,
                           size_t linenr,
+                          const char *funcname,
                           unsigned int flags,
-                          const char *fmt, ...) ATTRIBUTE_FMT_PRINTF(6, 7);
+                          const char *fmt, ...) ATTRIBUTE_FMT_PRINTF(7, 8);
 extern void virLogVMessage(const char *category,
                            virLogPriority priority,
-                           const char *funcname,
+                           const char *filename,
                            size_t linenr,
+                           const char *funcname,
                            unsigned int flags,
                            const char *fmt,
-                           va_list vargs) ATTRIBUTE_FMT_PRINTF(6, 0);
+                           va_list vargs) ATTRIBUTE_FMT_PRINTF(7, 0);
 extern int virLogSetBufferSize(int size);
 extern void virLogEmergencyDumpAll(int signum);
 #endif
diff --git a/src/util/viraudit.c b/src/util/viraudit.c
index 5941714..ea1a79b 100644
--- a/src/util/viraudit.c
+++ b/src/util/viraudit.c
@@ -103,10 +103,10 @@ void virAuditSend(const char *file ATTRIBUTE_UNUSED, const char *func,
 
     if (auditlog && str) {
         if (success)
-            virLogMessage("audit", VIR_LOG_INFO, func, linenr, 0,
+            virLogMessage("audit", VIR_LOG_INFO, file, linenr, func, 0,
                           "success=yes %s", str);
         else
-            virLogMessage("audit", VIR_LOG_WARN, func, linenr, 0,
+            virLogMessage("audit", VIR_LOG_WARN, file, linenr, func, 0,
                           "success=no %s", str);
     }
 
diff --git a/src/util/virterror.c b/src/util/virterror.c
index b257e25..53f80af 100644
--- a/src/util/virterror.c
+++ b/src/util/virterror.c
@@ -676,8 +676,8 @@ virRaiseErrorFull(const char *filename ATTRIBUTE_UNUSED,
     priority = virErrorLevelPriority(level);
     if (virErrorLogPriorityFilter)
         priority = virErrorLogPriorityFilter(to, priority);
-    virLogMessage(filename, priority,
-                  funcname, linenr,
+    virLogMessage("error", priority,
+                  filename, linenr, funcname,
                   virErrorLogPriorityFilter ? 0 : 1,
                   "%s", str);
 
diff --git a/tests/testutils.c b/tests/testutils.c
index a33b10d..244db43 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -481,9 +481,10 @@ static struct virtTestLogData testLog = { VIR_BUFFER_INITIALIZER };
 
 static void
 virtTestLogOutput(const char *category ATTRIBUTE_UNUSED,
-                  int priority ATTRIBUTE_UNUSED,
+                  virLogPriority priority ATTRIBUTE_UNUSED,
+                  const char *filename ATTRIBUTE_UNUSED,
+                  size_t lineno ATTRIBUTE_UNUSED,
                   const char *funcname ATTRIBUTE_UNUSED,
-                  long long lineno ATTRIBUTE_UNUSED,
                   const char *timestamp,
                   unsigned int flags,
                   const char *rawstr ATTRIBUTE_UNUSED,
-- 
1.7.11.4




More information about the libvir-list mailing list