mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice-common
synced 2026-01-07 03:45:08 +00:00
log: Use GLib logging levels directly
As we moved toward GLib logging instead of having to convert every time the log level from the old system to GLib use directly GLib constants. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Christophe Fergeau <cfergeau@redhat.com>
This commit is contained in:
parent
31ebe7c6d5
commit
1d7acdcf57
35
common/log.c
35
common/log.c
@ -31,16 +31,24 @@
|
||||
#include "backtrace.h"
|
||||
|
||||
static int glib_debug_level = INT_MAX;
|
||||
static int abort_level = -1;
|
||||
static int abort_mask = 0;
|
||||
|
||||
#ifndef SPICE_ABORT_LEVEL_DEFAULT
|
||||
#ifndef SPICE_ABORT_MASK_DEFAULT
|
||||
#ifdef SPICE_DISABLE_ABORT
|
||||
#define SPICE_ABORT_LEVEL_DEFAULT -1
|
||||
#define SPICE_ABORT_MASK_DEFAULT 0
|
||||
#else
|
||||
#define SPICE_ABORT_LEVEL_DEFAULT SPICE_LOG_LEVEL_CRITICAL
|
||||
#define SPICE_ABORT_MASK_DEFAULT (G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_ERROR)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
SPICE_LOG_LEVEL_ERROR,
|
||||
SPICE_LOG_LEVEL_CRITICAL,
|
||||
SPICE_LOG_LEVEL_WARNING,
|
||||
SPICE_LOG_LEVEL_INFO,
|
||||
SPICE_LOG_LEVEL_DEBUG,
|
||||
} SpiceLogLevel;
|
||||
|
||||
static GLogLevelFlags spice_log_level_to_glib(SpiceLogLevel level)
|
||||
{
|
||||
static const GLogLevelFlags glib_levels[] = {
|
||||
@ -95,23 +103,23 @@ static void spice_log_set_debug_level(void)
|
||||
|
||||
static void spice_log_set_abort_level(void)
|
||||
{
|
||||
if (abort_level == -1) {
|
||||
if (abort_mask == 0) {
|
||||
const char *abort_str = g_getenv("SPICE_ABORT_LEVEL");
|
||||
if (abort_str != NULL) {
|
||||
GLogLevelFlags glib_abort_level;
|
||||
|
||||
/* FIXME: To be removed after enough deprecation time */
|
||||
g_warning("Setting SPICE_ABORT_LEVEL is deprecated, use G_DEBUG instead");
|
||||
abort_level = atoi(abort_str);
|
||||
glib_abort_level = spice_log_level_to_glib(abort_level);
|
||||
glib_abort_level = spice_log_level_to_glib(atoi(abort_str));
|
||||
unsigned int fatal_mask = G_LOG_FATAL_MASK;
|
||||
while (glib_abort_level >= G_LOG_LEVEL_ERROR) {
|
||||
fatal_mask |= glib_abort_level;
|
||||
glib_abort_level >>= 1;
|
||||
}
|
||||
abort_mask = fatal_mask;
|
||||
g_log_set_fatal_mask(SPICE_LOG_DOMAIN, fatal_mask);
|
||||
} else {
|
||||
abort_level = SPICE_ABORT_LEVEL_DEFAULT;
|
||||
abort_mask = SPICE_ABORT_MASK_DEFAULT;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -146,16 +154,15 @@ SPICE_CONSTRUCTOR_FUNC(spice_log_init)
|
||||
}
|
||||
|
||||
static void spice_logv(const char *log_domain,
|
||||
SpiceLogLevel log_level,
|
||||
GLogLevelFlags log_level,
|
||||
const char *strloc,
|
||||
const char *function,
|
||||
const char *format,
|
||||
va_list args)
|
||||
{
|
||||
GString *log_msg;
|
||||
GLogLevelFlags glib_level = spice_log_level_to_glib(log_level);
|
||||
|
||||
if ((glib_level & G_LOG_LEVEL_MASK) > glib_debug_level) {
|
||||
if ((log_level & G_LOG_LEVEL_MASK) > glib_debug_level) {
|
||||
return; // do not print anything
|
||||
}
|
||||
|
||||
@ -166,17 +173,17 @@ static void spice_logv(const char *log_domain,
|
||||
if (format) {
|
||||
g_string_append_vprintf(log_msg, format, args);
|
||||
}
|
||||
g_log(log_domain, glib_level, "%s", log_msg->str);
|
||||
g_log(log_domain, log_level, "%s", log_msg->str);
|
||||
g_string_free(log_msg, TRUE);
|
||||
|
||||
if (abort_level != -1 && abort_level >= (int) log_level) {
|
||||
if ((abort_mask & log_level) != 0) {
|
||||
spice_backtrace();
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
void spice_log(const char *log_domain,
|
||||
SpiceLogLevel log_level,
|
||||
GLogLevelFlags log_level,
|
||||
const char *strloc,
|
||||
const char *function,
|
||||
const char *format,
|
||||
|
||||
26
common/log.h
26
common/log.h
@ -33,16 +33,8 @@ SPICE_BEGIN_DECLS
|
||||
|
||||
#define SPICE_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
|
||||
|
||||
typedef enum {
|
||||
SPICE_LOG_LEVEL_ERROR,
|
||||
SPICE_LOG_LEVEL_CRITICAL,
|
||||
SPICE_LOG_LEVEL_WARNING,
|
||||
SPICE_LOG_LEVEL_INFO,
|
||||
SPICE_LOG_LEVEL_DEBUG,
|
||||
} SpiceLogLevel;
|
||||
|
||||
void spice_log(const char *log_domain,
|
||||
SpiceLogLevel log_level,
|
||||
GLogLevelFlags log_level,
|
||||
const char *strloc,
|
||||
const char *function,
|
||||
const char *format,
|
||||
@ -50,20 +42,20 @@ void spice_log(const char *log_domain,
|
||||
|
||||
#define spice_return_if_fail(x) G_STMT_START { \
|
||||
if G_LIKELY(x) { } else { \
|
||||
spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_CRITICAL, SPICE_STRLOC, G_STRFUNC, "condition `%s' failed", #x); \
|
||||
spice_log(SPICE_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, SPICE_STRLOC, G_STRFUNC, "condition `%s' failed", #x); \
|
||||
return; \
|
||||
} \
|
||||
} G_STMT_END
|
||||
|
||||
#define spice_return_val_if_fail(x, val) G_STMT_START { \
|
||||
if G_LIKELY(x) { } else { \
|
||||
spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_CRITICAL, SPICE_STRLOC, __FUNCTION__, "condition `%s' failed", #x); \
|
||||
spice_log(SPICE_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, SPICE_STRLOC, __FUNCTION__, "condition `%s' failed", #x); \
|
||||
return (val); \
|
||||
} \
|
||||
} G_STMT_END
|
||||
|
||||
#define spice_warn_if_reached() G_STMT_START { \
|
||||
spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_WARNING, SPICE_STRLOC, __FUNCTION__, "should not be reached"); \
|
||||
spice_log(SPICE_LOG_DOMAIN, G_LOG_LEVEL_WARNING, SPICE_STRLOC, __FUNCTION__, "should not be reached"); \
|
||||
} G_STMT_END
|
||||
|
||||
#define spice_printerr(format, ...) G_STMT_START { \
|
||||
@ -71,23 +63,23 @@ void spice_log(const char *log_domain,
|
||||
} G_STMT_END
|
||||
|
||||
#define spice_info(format, ...) G_STMT_START { \
|
||||
spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_INFO, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
spice_log(SPICE_LOG_DOMAIN, G_LOG_LEVEL_INFO, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
} G_STMT_END
|
||||
|
||||
#define spice_debug(format, ...) G_STMT_START { \
|
||||
spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_DEBUG, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
spice_log(SPICE_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
} G_STMT_END
|
||||
|
||||
#define spice_warning(format, ...) G_STMT_START { \
|
||||
spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_WARNING, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
spice_log(SPICE_LOG_DOMAIN, G_LOG_LEVEL_WARNING, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
} G_STMT_END
|
||||
|
||||
#define spice_critical(format, ...) G_STMT_START { \
|
||||
spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_CRITICAL, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
spice_log(SPICE_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
} G_STMT_END
|
||||
|
||||
#define spice_error(format, ...) G_STMT_START { \
|
||||
spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_ERROR, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
spice_log(SPICE_LOG_DOMAIN, G_LOG_LEVEL_ERROR, SPICE_STRLOC, __FUNCTION__, format, ## __VA_ARGS__); \
|
||||
} G_STMT_END
|
||||
|
||||
#define spice_warn_if_fail(x) G_STMT_START { \
|
||||
|
||||
Loading…
Reference in New Issue
Block a user