From e3cc516cb34457f5e41a0d5ce1732dc3e3c52375 Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Fri, 19 Aug 2022 11:34:24 -0400 Subject: [PATCH] ui: log informational messages and above to a temporary file --- .github/ISSUE_TEMPLATE/bug_report.md | 7 +++++-- lib/solaar/gtk.py | 29 +++++++++++++++++----------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index dabe56dd..c9133052 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -34,8 +34,11 @@ CONTENTS HERE - Errors or warrnings from Solaar: - - + **Describe the bug** diff --git a/lib/solaar/gtk.py b/lib/solaar/gtk.py index e4e56cef..ed26e93a 100755 --- a/lib/solaar/gtk.py +++ b/lib/solaar/gtk.py @@ -19,19 +19,19 @@ ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import importlib +import logging import os.path +import tempfile from logging import INFO as _INFO from logging import WARNING as _WARNING -from logging import getLogger import solaar.cli as _cli import solaar.i18n as _i18n from solaar import NAME, __version__ -_log = getLogger(__name__) -del getLogger +_log = logging.getLogger(__name__) # # @@ -49,6 +49,7 @@ def _require(module, os_package, gi=None, gi_package=None, gi_version=None): battery_icons_style = 'regular' +temp = tempfile.NamedTemporaryFile(prefix='Solaar_', mode='w', delete=True) def _parse_arguments(): @@ -100,17 +101,21 @@ def _parse_arguments(): global tray_icon_size tray_icon_size = args.tray_icon_size - import logging + log_format = '%(asctime)s,%(msecs)03d %(levelname)8s [%(threadName)s] %(name)s: %(message)s' + log_level = logging.ERROR - 10 * args.debug + logging.getLogger('').setLevel(min(log_level, logging.WARNING)) + file_handler = logging.StreamHandler(temp) + file_handler.setLevel(max(min(log_level, logging.WARNING), logging.INFO)) + file_handler.setFormatter(logging.Formatter(log_format)) + logging.getLogger('').addHandler(file_handler) if args.debug > 0: - log_level = logging.ERROR - 10 * args.debug - log_format = '%(asctime)s,%(msecs)03d %(levelname)8s [%(threadName)s] %(name)s: %(message)s' - logging.basicConfig(level=max(log_level, logging.DEBUG), format=log_format, datefmt='%H:%M:%S') - else: - logging.root.addHandler(logging.NullHandler()) - logging.root.setLevel(logging.ERROR) + stream_handler = logging.StreamHandler() + stream_handler.setFormatter(logging.Formatter(log_format)) + stream_handler.setLevel(log_level) + logging.getLogger('').addHandler(stream_handler) if not args.action: - if logging.root.isEnabledFor(logging.INFO): + if _log.isEnabledFor(logging.INFO): logging.info('language %s (%s), translations path %s', _i18n.language, _i18n.encoding, _i18n.path) return args @@ -172,6 +177,8 @@ def main(): from traceback import format_exc sys.exit('%s: error: %s' % (NAME.lower(), format_exc())) + temp.close() + if __name__ == '__main__': main()