From b329e8edd469f1b40b1232ccbd3df9c2bc30087a Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 11 Nov 2015 15:09:02 +0100 Subject: [PATCH] core: Use daemon specific GLib logging handling for backtraces --- src/main.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main.c b/src/main.c index 2001ceed8..ebc93f598 100644 --- a/src/main.c +++ b/src/main.c @@ -361,6 +361,21 @@ static void init_defaults(void) main_opts.did_version = (major << 8 | minor); } +static void log_handler(const gchar *log_domain, GLogLevelFlags log_level, + const gchar *message, gpointer user_data) +{ + int priority; + + if (log_level & (G_LOG_LEVEL_ERROR | + G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING)) + priority = 0x03; + else + priority = 0x06; + + btd_log(0xffff, priority, "GLib: %s", message); + btd_backtrace(0xffff); +} + static GMainLoop *event_loop; void btd_exit(void) @@ -594,6 +609,10 @@ int main(int argc, char *argv[]) __btd_log_init(option_debug, option_detach); + g_log_set_handler("GLib", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | + G_LOG_FLAG_RECURSION, + log_handler, NULL); + sd_notify(0, "STATUS=Starting up"); main_conf = load_config(CONFIGDIR "/main.conf"); -- 2.47.3