From 3ade4ea18a1486db796a4a97e561577111e6c745 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Mon, 21 Mar 2016 20:19:52 +0100 Subject: Resurrect -l/ --log-file switch --- midori/main.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/midori/main.c b/midori/main.c index 00bc3b4b..71acff57 100644 --- a/midori/main.c +++ b/midori/main.c @@ -54,6 +54,48 @@ snapshot_load_finished_cb (GtkWidget* web_view, } #endif +static void +midori_log_to_file (const gchar* log_domain, + GLogLevelFlags log_level, + const gchar* message, + gpointer user_data) +{ + FILE* logfile = fopen ((const char*)user_data, "a"); + gchar* level_name = ""; + time_t timestamp = time (NULL); + + switch (log_level) + { + /* skip irrelevant flags */ + case G_LOG_LEVEL_MASK: + case G_LOG_FLAG_FATAL: + case G_LOG_FLAG_RECURSION: + + case G_LOG_LEVEL_ERROR: + level_name = "ERROR"; + break; + case G_LOG_LEVEL_CRITICAL: + level_name = "CRITICAL"; + break; + case G_LOG_LEVEL_WARNING: + level_name = "WARNING"; + break; + case G_LOG_LEVEL_MESSAGE: + level_name = "MESSAGE"; + break; + case G_LOG_LEVEL_INFO: + level_name = "INFO"; + break; + case G_LOG_LEVEL_DEBUG: + level_name = "DEBUG"; + break; + } + + fprintf (logfile, "%s%s-%s **: %s\n", asctime (localtime (×tamp)), + log_domain ? log_domain : "Midori", level_name, message); + fclose (logfile); +} + int main (int argc, char** argv) @@ -67,6 +109,7 @@ main (int argc, gboolean debug = FALSE; gboolean run; gchar* snapshot; + gchar* logfile; gchar** execute; gboolean help_execute; gboolean version; @@ -110,6 +153,8 @@ main (int argc, /* i18n: CLI: Close tabs, clear private data, open starting page */ N_("Reset Midori after SECONDS seconds of inactivity"), N_("SECONDS") }, #endif + { "log-file", 'l', 0, G_OPTION_ARG_FILENAME, &logfile, + N_("Redirects console warnings to the specified FILENAME"), N_("FILENAME")}, { NULL } }; @@ -121,6 +166,7 @@ main (int argc, plain = FALSE; run = FALSE; snapshot = NULL; + logfile = NULL; execute = NULL; help_execute = FALSE; version = FALSE; @@ -287,6 +333,11 @@ main (int argc, return 0; } + if (logfile) + { + g_log_set_default_handler (midori_log_to_file, (gpointer)logfile); + } + if (plain) { GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL); -- cgit v1.2.1