static void gnc_log_init() { if (log_to_filename != NULL) { qof_log_init_filename_special(log_to_filename); } else { /* initialize logging to our file. */ gchar *tracefilename; tracefilename = g_build_filename(g_get_tmp_dir(), "gnucash.trace", (gchar *)NULL); qof_log_init_filename(tracefilename); g_free(tracefilename); } // set a reasonable default. qof_log_set_default(QOF_LOG_WARNING); gnc_log_default(); if (gnc_is_debugging()) { qof_log_set_level("", QOF_LOG_INFO); qof_log_set_level("qof", QOF_LOG_INFO); qof_log_set_level("gnc", QOF_LOG_INFO); } { gchar *log_config_filename; log_config_filename = gnc_build_dotgnucash_path("log.conf"); if (g_file_test(log_config_filename, G_FILE_TEST_EXISTS)) qof_log_parse_log_config(log_config_filename); g_free(log_config_filename); } if (log_flags != NULL) { int i = 0; for (; log_flags[i] != NULL; i++) { QofLogLevel level; gchar **parts = NULL; gchar *log_opt = log_flags[i]; parts = g_strsplit(log_opt, "=", 2); if (parts == NULL || parts[0] == NULL || parts[1] == NULL) { g_warning("string [%s] not parseable", log_opt); continue; } level = qof_log_level_from_string(parts[1]); qof_log_set_level(parts[0], level); g_strfreev(parts); } } }
int main(int argc, char ** argv) { #if !defined(G_THREADS_ENABLED) || defined(G_THREADS_IMPL_NONE) # error "No GLib thread implementation available!" #endif g_thread_init(NULL); #ifdef ENABLE_BINRELOC { GError *binreloc_error = NULL; if (!gnc_gbr_init(&binreloc_error)) { g_print("main: Error on gnc_gbr_init: %s\n", binreloc_error->message); g_error_free(binreloc_error); } } #else g_message("main: binreloc relocation support was disabled at configure time.\n"); #endif /* This should be called before gettext is initialized * The user may have configured a different language via * the environment file. */ environment_override(); #ifdef HAVE_GETTEXT { gchar *localedir = gnc_path_get_localedir(); /* setlocale(LC_ALL, ""); is already called by gtk_set_locale() via gtk_init(). */ bindtextdomain(GETTEXT_PACKAGE, localedir); textdomain(GETTEXT_PACKAGE); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); g_free(localedir); } #endif qof_log_init(); qof_log_set_default(QOF_LOG_INFO); gnucash_command_line(&argc, argv); gnc_print_unstable_message(); gnc_log_init(); gnc_module_system_init(); if (add_quotes_file) { gchar *prefix = gnc_path_get_prefix (); gchar *pkgsysconfdir = gnc_path_get_pkgsysconfdir (); gchar *pkgdatadir = gnc_path_get_pkgdatadir (); gchar *pkglibdir = gnc_path_get_pkglibdir (); /* This option needs to run without a display, so we can't initialize any GUI libraries. */ gnome_program_init( "gnucash", VERSION, LIBGNOME_MODULE, argc, argv, GNOME_PARAM_APP_PREFIX, prefix, GNOME_PARAM_APP_SYSCONFDIR, pkgsysconfdir, GNOME_PARAM_APP_DATADIR, pkgdatadir, GNOME_PARAM_APP_LIBDIR, pkglibdir, GNOME_PARAM_NONE); g_free (prefix); g_free (pkgsysconfdir); g_free (pkgdatadir); g_free (pkglibdir); scm_boot_guile(argc, argv, inner_main_add_price_quotes, 0); exit(0); /* never reached */ } gnc_gnome_init (argc, argv, VERSION); gnc_gui_init(); scm_boot_guile(argc, argv, inner_main, 0); exit(0); /* never reached */ }
/* replicate old gnc-trace enum behaviour * * these are only here as a convenience, they could be * initialised elsewhere as appropriate. * */ void gnc_log_default(void) { qof_log_set_default(QOF_LOG_WARNING); qof_log_set_level(GNC_MOD_ROOT, QOF_LOG_WARNING); qof_log_set_level(GNC_MOD_TEST, QOF_LOG_DEBUG); }