mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice-common
synced 2026-01-27 03:06:27 +00:00
log: remove deprecated SPICE_DEBUG_LEVEL support
This feature was marked obsolete by efd1d3cb4d more than
three years ago.
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
This commit is contained in:
parent
ea20b8c013
commit
e3af47fe9d
87
common/log.c
87
common/log.c
@ -32,93 +32,10 @@
|
||||
#include "log.h"
|
||||
#include "backtrace.h"
|
||||
|
||||
static int glib_debug_level = INT_MAX;
|
||||
|
||||
#define G_LOG_DOMAIN "Spice"
|
||||
|
||||
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[] = {
|
||||
[ SPICE_LOG_LEVEL_ERROR ] = G_LOG_LEVEL_ERROR,
|
||||
[ SPICE_LOG_LEVEL_CRITICAL ] = G_LOG_LEVEL_CRITICAL,
|
||||
[ SPICE_LOG_LEVEL_WARNING ] = G_LOG_LEVEL_WARNING,
|
||||
[ SPICE_LOG_LEVEL_INFO ] = G_LOG_LEVEL_INFO,
|
||||
[ SPICE_LOG_LEVEL_DEBUG ] = G_LOG_LEVEL_DEBUG,
|
||||
};
|
||||
g_return_val_if_fail (level >= 0, G_LOG_LEVEL_ERROR);
|
||||
g_return_val_if_fail (level < G_N_ELEMENTS(glib_levels), G_LOG_LEVEL_DEBUG);
|
||||
|
||||
return glib_levels[level];
|
||||
}
|
||||
|
||||
static void spice_log_set_debug_level(void)
|
||||
{
|
||||
if (glib_debug_level == INT_MAX) {
|
||||
const char *debug_str = g_getenv("SPICE_DEBUG_LEVEL");
|
||||
if (debug_str != NULL) {
|
||||
int debug_level;
|
||||
char *debug_env;
|
||||
|
||||
/* FIXME: To be removed after enough deprecation time */
|
||||
g_warning("Setting SPICE_DEBUG_LEVEL is deprecated, use G_MESSAGES_DEBUG instead");
|
||||
debug_level = atoi(debug_str);
|
||||
if (debug_level > SPICE_LOG_LEVEL_DEBUG) {
|
||||
debug_level = SPICE_LOG_LEVEL_DEBUG;
|
||||
}
|
||||
glib_debug_level = spice_log_level_to_glib(debug_level);
|
||||
|
||||
/* If the debug level is too high, make sure we don't try to enable
|
||||
* display of glib debug logs */
|
||||
if (debug_level < SPICE_LOG_LEVEL_INFO)
|
||||
return;
|
||||
|
||||
/* Make sure GLib default log handler will show the debug messages. Messing with
|
||||
* environment variables like this is ugly, but this only happens when the legacy
|
||||
* SPICE_DEBUG_LEVEL is used
|
||||
*/
|
||||
debug_env = (char *)g_getenv("G_MESSAGES_DEBUG");
|
||||
if (debug_env == NULL) {
|
||||
g_setenv("G_MESSAGES_DEBUG", G_LOG_DOMAIN, FALSE);
|
||||
} else {
|
||||
debug_env = g_strconcat(debug_env, " ", G_LOG_DOMAIN, NULL);
|
||||
g_setenv("G_MESSAGES_DEBUG", G_LOG_DOMAIN, FALSE);
|
||||
g_free(debug_env);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void spice_logger(const gchar *log_domain,
|
||||
GLogLevelFlags log_level,
|
||||
const gchar *message,
|
||||
gpointer user_data G_GNUC_UNUSED)
|
||||
{
|
||||
if ((log_level & G_LOG_LEVEL_MASK) > glib_debug_level) {
|
||||
return; // do not print anything
|
||||
}
|
||||
g_log_default_handler(log_domain, log_level, message, NULL);
|
||||
}
|
||||
|
||||
SPICE_CONSTRUCTOR_FUNC(spice_log_init)
|
||||
{
|
||||
|
||||
spice_log_set_debug_level();
|
||||
if (glib_debug_level != INT_MAX) {
|
||||
/* If SPICE_DEBUG_LEVEL is set, we need a custom handler, which is
|
||||
* going to break use of g_log_set_default_handler() by apps
|
||||
*/
|
||||
g_log_set_handler(G_LOG_DOMAIN,
|
||||
G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
|
||||
spice_logger, NULL);
|
||||
}
|
||||
/* Threading is always enabled from 2.31.0 onwards */
|
||||
/* Our logging is potentially used from different threads.
|
||||
* Older glibs require that g_thread_init() is called when
|
||||
@ -139,10 +56,6 @@ static void spice_logv(const char *log_domain,
|
||||
{
|
||||
GString *log_msg;
|
||||
|
||||
if ((log_level & G_LOG_LEVEL_MASK) > glib_debug_level) {
|
||||
return; // do not print anything
|
||||
}
|
||||
|
||||
log_msg = g_string_new(NULL);
|
||||
if (strloc && function) {
|
||||
g_string_append_printf(log_msg, "%s:%s: ", strloc, function);
|
||||
|
||||
@ -217,71 +217,6 @@ static void test_log_levels(void)
|
||||
g_test_trap_assert_stdout_unmatched("*other_debug*");
|
||||
}
|
||||
|
||||
/* Checks that SPICE_DEBUG_LEVEL impacts spice_debug(), g_debug() but not other_debug() */
|
||||
static void test_spice_debug_level(void)
|
||||
{
|
||||
if (g_test_subprocess()) {
|
||||
/* g_test_expected_message only checks whether the appropriate messages got up to g_log()
|
||||
* The following calls will be caught by the parent process to check what was (not) printed
|
||||
* to stdout/stderr
|
||||
*/
|
||||
spice_info("spice_info");
|
||||
g_debug("g_debug");
|
||||
spice_debug("spice_debug");
|
||||
other_debug("other_debug");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
g_unsetenv("G_MESSAGES_DEBUG");
|
||||
g_setenv("SPICE_DEBUG_LEVEL", "5", TRUE);
|
||||
g_test_trap_subprocess(NULL, 0, 0);
|
||||
g_unsetenv("SPICE_DEBUG_LEVEL");
|
||||
g_test_trap_assert_passed();
|
||||
g_test_trap_assert_stderr("*SPICE_DEBUG_LEVEL*deprecated*");
|
||||
g_test_trap_assert_stdout("*spice_info\n*g_debug\n*spice_debug\n");
|
||||
g_test_trap_assert_stdout_unmatched("*other_debug*");
|
||||
}
|
||||
|
||||
/* Checks that raising SPICE_DEBUG_LEVEL allows to only show spice_warning() and spice_critical()
|
||||
* messages, as well as g_warning() and g_critical(), but does not impact other_message()
|
||||
*/
|
||||
static void test_spice_debug_level_warning(void)
|
||||
{
|
||||
if (g_test_subprocess()) {
|
||||
spice_info("spice_info");
|
||||
spice_debug("spice_debug");
|
||||
spice_warning("spice_warning");
|
||||
g_debug("g_debug");
|
||||
g_info("g_info");
|
||||
g_message("g_message");
|
||||
g_warning("g_warning");
|
||||
g_critical("g_critical");
|
||||
other_debug("other_debug");
|
||||
other_info("other_info");
|
||||
other_message("other_message");
|
||||
other_warning("other_warning");
|
||||
other_critical("other_critical");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
g_setenv("SPICE_DEBUG_LEVEL", "1", TRUE);
|
||||
g_test_trap_subprocess(NULL, 0, 0);
|
||||
g_unsetenv("SPICE_DEBUG_LEVEL");
|
||||
g_test_trap_assert_passed();
|
||||
g_test_trap_assert_stderr("*SPICE_DEBUG_LEVEL*deprecated*");
|
||||
g_test_trap_assert_stderr("*g_critical\n*other_message\n*other_warning\n*other_critical\n");
|
||||
g_test_trap_assert_stdout_unmatched("*spice_info*");
|
||||
g_test_trap_assert_stdout_unmatched("*spice_debug*");
|
||||
g_test_trap_assert_stderr_unmatched("*spice_warning*");
|
||||
g_test_trap_assert_stdout_unmatched("*g_debug*");
|
||||
g_test_trap_assert_stdout_unmatched("*g_info*");
|
||||
g_test_trap_assert_stderr_unmatched("*g_message*");
|
||||
g_test_trap_assert_stderr_unmatched("*g_warning*");
|
||||
g_test_trap_assert_stdout_unmatched("*other_info*");
|
||||
}
|
||||
|
||||
/* Checks that setting G_MESSAGES_DEBUG to 'Spice' impacts spice_debug() and
|
||||
* g_debug() but not other_debug() */
|
||||
static void test_spice_g_messages_debug(void)
|
||||
@ -358,8 +293,6 @@ int main(int argc, char **argv)
|
||||
g_log_set_always_fatal(fatal_mask & G_LOG_LEVEL_MASK);
|
||||
|
||||
#if GLIB_CHECK_VERSION(2,38,0)
|
||||
g_test_add_func("/spice-common/spice-debug-level", test_spice_debug_level);
|
||||
g_test_add_func("/spice-common/spice-debug-level-warning", test_spice_debug_level_warning);
|
||||
g_test_add_func("/spice-common/spice-g-messages-debug", test_spice_g_messages_debug);
|
||||
g_test_add_func("/spice-common/spice-g-messages-debug-all", test_spice_g_messages_debug_all);
|
||||
g_test_add_func("/spice-common/spice-log-levels", test_log_levels);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user