summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Dywan <christian.dywan@canonical.com>2016-03-21 20:19:52 +0100
committerChristian Dywan <christian.dywan@canonical.com>2016-03-21 20:19:52 +0100
commit3ade4ea18a1486db796a4a97e561577111e6c745 (patch)
tree635d87592fd28867f440a8ecab8833570fa1977f
parent28a65ea0215012639121c3911d459ca47b2e0185 (diff)
downloadmidori-3ade4ea18a1486db796a4a97e561577111e6c745.tar.gz
Resurrect -l/ --log-file switch
-rw-r--r--midori/main.c51
1 files changed, 51 insertions, 0 deletions
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 (&timestamp)),
+ 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);