From: "Daniel P. Berrange" <berrange(a)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(a)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