1
0
Fork 0
mirror of synced 2024-06-16 17:44:44 +12:00

Initialize logging in RareApp and log both Rare and GameLaunchHelper

This commit is contained in:
Stelios Tsampas 2022-09-08 14:58:11 +03:00
parent 0c45bd918c
commit 8d9f02eab5
4 changed files with 63 additions and 61 deletions

View file

@ -1,6 +1,5 @@
import logging
import os
import platform
import shutil
import sys
import time
@ -9,13 +8,11 @@ from argparse import Namespace
from datetime import datetime
from typing import Optional
import legendary
import requests.exceptions
from PyQt5.QtCore import QThreadPool, QTimer, QT_VERSION_STR, PYQT_VERSION_STR
from PyQt5.QtCore import QThreadPool, QTimer
from PyQt5.QtWidgets import QApplication, QMessageBox
from requests import HTTPError
import rare
from rare.components.dialogs.launch_dialog import LaunchDialog
from rare.components.main_window import MainWindow
from rare.shared import (
@ -27,7 +24,6 @@ from rare.shared.rare_core import RareCore
from rare.utils import legendary_utils, config_helper, paths
from rare.widgets.rare_app import RareApp
logger = logging.getLogger("Rare")
@ -52,49 +48,8 @@ def excepthook(exc_type, exc_value, exc_tb):
class App(RareApp):
def __init__(self, args: Namespace):
super(App, self).__init__(args)
start_time = time.strftime("%y-%m-%d--%H-%M") # year-month-day-hour-minute
file_name = os.path.join(paths.log_dir(), f"Rare_{start_time}.log")
for handler in logging.root.handlers[:]:
logging.root.removeHandler(handler)
file_handler = logging.FileHandler(filename=file_name, encoding="utf-8")
file_handler.setFormatter(fmt=logging.Formatter("[%(name)s] %(levelname)s: %(message)s"))
# configure logging
if args.debug:
logging.basicConfig(
format="[%(name)s] %(levelname)s: %(message)s",
level=logging.DEBUG,
stream=sys.stderr,
)
file_handler.setLevel(logging.DEBUG)
logging.root.addHandler(file_handler)
logging.getLogger().setLevel(level=logging.DEBUG)
# keep requests, asyncio and pillow quiet
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)
logging.getLogger("asyncio").setLevel(logging.WARNING)
logger.info(
f"Launching Rare version {rare.__version__} Codename: {rare.code_name}\n"
f" - Using Legendary {legendary.__version__} Codename: {legendary.__codename__} as backend\n"
f" - Operating System: {platform.system()}, Python version: {platform.python_version()}\n"
f" - Running {sys.executable} {' '.join(sys.argv)}\n"
f" - Qt version: {QT_VERSION_STR}, PyQt version: {PYQT_VERSION_STR}"
)
else:
logging.basicConfig(
format="[%(name)s] %(levelname)s: %(message)s",
level=logging.INFO,
stream=sys.stderr,
)
file_handler.setLevel(logging.INFO)
logging.root.addHandler(file_handler)
logger.info(f"Launching Rare version {rare.__version__}")
logger.info(f"Operating System: {platform.system()}")
log_file = "Rare_{0}.log"
super(App, self).__init__(args, log_file)
self.rare_core = RareCore(args=args)
self.args = ArgumentsSingleton()
self.signals = GlobalSignalsSingleton()

View file

@ -17,6 +17,8 @@ from .console import Console
from .lgd_helper import get_launch_args, InitArgs, get_configured_process, LaunchArgs, GameArgsError
from .message_models import ErrorModel, Actions, FinishedModel, BaseModel, StateChangedModel
logger = logging.getLogger("RareLauncher")
class PreLaunchThread(QRunnable):
class Signals(QObject):
@ -65,7 +67,8 @@ class GameProcessApp(RareApp):
success: bool = True
def __init__(self, args: Namespace):
super(GameProcessApp, self).__init__(args)
log_file = f"Rare_Launcher_{args.app_name}" + "_{0}.log"
super(GameProcessApp, self).__init__(args, log_file)
self.game_process = QProcess()
self.app_name = args.app_name
self.logger = getLogger(self.app_name)
@ -206,10 +209,6 @@ class GameProcessApp(RareApp):
def start_game(args: Namespace):
args = InitArgs.from_argparse(args)
logging.basicConfig(
format="[%(name)s] %(levelname)s: %(message)s",
level=logging.INFO,
)
app = GameProcessApp(args)
app.setQuitOnLastWindowClosed(True)

View file

@ -25,6 +25,7 @@ class InitArgs:
skip_version_check: bool = False
wine_prefix: str = ""
wine_bin: str = ""
debug: str = ""
@classmethod
def from_argparse(cls, args):
@ -33,7 +34,8 @@ class InitArgs:
offline=args.offline,
skip_version_check=args.skip_update_check,
wine_bin=args.wine_bin,
wine_prefix=args.wine_pfx
wine_prefix=args.wine_pfx,
debug=args.debug,
)

View file

@ -1,24 +1,24 @@
import logging
import os
import platform
import sys
import time
from argparse import Namespace
from logging import getLogger
from PyQt5.QtCore import Qt, QSettings, QTranslator
import legendary
from PyQt5.QtCore import Qt, QSettings, QTranslator, QT_VERSION_STR, PYQT_VERSION_STR
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication
# noinspection PyUnresolvedReferences
from legendary.core import LegendaryCore
import rare.resources.resources
from rare.utils import paths
from rare.utils.misc import set_color_pallete, set_style_sheet
class RareApp(QApplication):
logger = getLogger("RareApp")
logger = logging.getLogger("RareApp")
def __init__(self, args: Namespace):
def __init__(self, args: Namespace, log_file: str):
super(RareApp, self).__init__(sys.argv)
self.setQuitOnLastWindowClosed(False)
if hasattr(Qt, "AA_UseHighDpiPixmaps"):
@ -26,7 +26,53 @@ class RareApp(QApplication):
self.setApplicationName("Rare")
self.setOrganizationName("Rare")
# Create directories after QStandardPaths has been initialized
paths.create_dirs()
# Clean any existing logging handlers from library imports
for handler in logging.root.handlers[:]:
logging.root.removeHandler(handler)
start_time = time.strftime("%y-%m-%d--%H-%M") # year-month-day-hour-minute
file_handler = logging.FileHandler(
filename=os.path.join(paths.log_dir(), log_file.format(start_time)),
encoding="utf-8",
)
file_handler.setFormatter(fmt=logging.Formatter("[%(name)s] %(levelname)s: %(message)s"))
# Set up common logging channel to stderr
if args.debug:
logging.basicConfig(
format="[%(name)s] %(levelname)s: %(message)s",
level=logging.DEBUG,
stream=sys.stderr,
)
file_handler.setLevel(logging.DEBUG)
logging.root.addHandler(file_handler)
logging.getLogger().setLevel(level=logging.DEBUG)
# keep requests, asyncio and pillow quiet
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)
logging.getLogger("asyncio").setLevel(logging.WARNING)
self.logger.info(
f"Launching Rare version {rare.__version__} Codename: {rare.code_name}\n"
f" - Using Legendary {legendary.__version__} Codename: {legendary.__codename__} as backend\n"
f" - Operating System: {platform.system()}, Python version: {platform.python_version()}\n"
f" - Running {sys.executable} {' '.join(sys.argv)}\n"
f" - Qt version: {QT_VERSION_STR}, PyQt version: {PYQT_VERSION_STR}"
)
else:
logging.basicConfig(
format="[%(name)s] %(levelname)s: %(message)s",
level=logging.INFO,
stream=sys.stderr,
)
file_handler.setLevel(logging.DEBUG)
logging.root.addHandler(file_handler)
self.logger.info(f"Launching Rare version {rare.__version__}")
self.logger.info(f"Operating System: {platform.system()}")
self.settings = QSettings()
# Translator