Logging to a file when built and frozen
2 files changed, 16 insertions(+), 3 deletions(-)

M winrustler.spec
M winrustler/ui/__main__.py
M winrustler.spec +1 -1
@@ 26,4 26,4 @@ exe = EXE(pyz,
           strip=False,
           upx=True,
           runtime_tmpdir=None,
-          console=True , icon='winrustler.ico')
+          console=False , icon='winrustler.ico')

          
M winrustler/ui/__main__.py +15 -2
@@ 1,5 1,7 @@ 
+import logging
+import pathlib
+import platform
 import sys
-import logging
 
 from PyQt5.QtWidgets import qApp, QMenu
 

          
@@ 9,17 11,28 @@ from winrustler.ui.widgets.tray import R
 
 
 logger = logging.getLogger(__name__)
+is_frozen = getattr(sys, 'frozen', False)
+if platform.system() == 'Windows':
+    runtime_path = pathlib.Path.home() / "AppData" / "Roaming" / "winrustler"
+else:
+    runtime_path = None
 
 
 def main():
     import argparse
     parser = argparse.ArgumentParser(description=__doc__)
     parser.add_argument('-v', help='Verbosity, more of these increases logging.', action='count', default=0)
-    parser.add_argument('--show', help='Display rustler window on startu..', action='store_true')
+    parser.add_argument('--show', help='Display rustler window on startup.', action='store_true')
     parser.add_argument('qt_args', nargs='*')
     args = parser.parse_args()
     log_level = {0: logging.WARNING, 1: logging.INFO}.get(args.v, logging.DEBUG)
     logging.basicConfig(level=log_level)
+    if is_frozen and runtime_path is not None:
+        runtime_path.mkdir(exist_ok=True)
+        logfile = str(runtime_path / 'logging.txt')
+        logger.info("Logging to %s", logfile)
+        handler = logging.FileHandler(logfile)
+        logging.getLogger().addHandler(handler)
     logger.info("Logging level set to %s.", log_level)
 
     if not RustlerTray.isSystemTrayAvailable():