diff --git a/src/gajim.py b/src/gajim.py index 6a5a9ebd5..802157980 100644 --- a/src/gajim.py +++ b/src/gajim.py @@ -94,6 +94,9 @@ class GajimApplication(Gtk.Application): self.add_main_option('loglevel', ord('l'), GLib.OptionFlags.NONE, GLib.OptionArg.STRING, _('Configure logging system'), 'LEVEL') + self.add_main_option('warnings', ord('w'), GLib.OptionFlags.NONE, + GLib.OptionArg.NONE, + _('Show all warnings')) self.profile = '' self.config_path = None @@ -286,6 +289,8 @@ class GajimApplication(Gtk.Application): if options.contains('loglevel'): loglevel = options.lookup_value('loglevel').get_string() logging_helpers.set_loglevels(loglevel) + if options.contains('warnings'): + self.show_warnings() return -1 def do_command_line(self, command_line: Gio.ApplicationCommandLine) -> int: @@ -294,6 +299,19 @@ class GajimApplication(Gtk.Application): self.activate() return 0 + def show_warnings(self): + import traceback + import warnings + + def warn_with_traceback(message, category, filename, lineno, + file=None, line=None): + traceback.print_stack(file=sys.stderr) + sys.stderr.write(warnings.formatwarning(message, category, + filename, lineno, line)) + + warnings.showwarning = warn_with_traceback + warnings.filterwarnings(action="always") + def frozen_logging(self, path): import warnings if not os.path.exists(path):