[Spice-devel] [PATCH spice-common v2] log: Use GLib logging levels directly

Christophe Fergeau cfergeau at redhat.com
Thu Jun 8 13:46:00 UTC 2017


Acked-by: Christophe Fergeau <cfergeau at redhat.com>

On Thu, Jun 08, 2017 at 02:05:18PM +0100, Frediano Ziglio wrote:
> 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 at redhat.com>
> ---
>  common/log.c | 35 +++++++++++++++++++++--------------
>  common/log.h | 26 +++++++++-----------------
>  2 files changed, 30 insertions(+), 31 deletions(-)
> 
> Changes since v1:
> - some suggested variable rename and test optimization
> 
> diff --git a/common/log.c b/common/log.c
> index 7437d3e..61a27ac 100644
> --- a/common/log.c
> +++ b/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,
> diff --git a/common/log.h b/common/log.h
> index 73432d7..1ea2313 100644
> --- a/common/log.h
> +++ b/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 {            \
> -- 
> 2.9.4
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170608/f68818bd/attachment.sig>


More information about the Spice-devel mailing list