Initialize logging in RareApp and log both Rare and GameLaunchHelper
This commit is contained in:
parent
0c45bd918c
commit
8d9f02eab5
51
rare/app.py
51
rare/app.py
|
@ -1,6 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import platform
|
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
@ -9,13 +8,11 @@ from argparse import Namespace
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import legendary
|
|
||||||
import requests.exceptions
|
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 PyQt5.QtWidgets import QApplication, QMessageBox
|
||||||
from requests import HTTPError
|
from requests import HTTPError
|
||||||
|
|
||||||
import rare
|
|
||||||
from rare.components.dialogs.launch_dialog import LaunchDialog
|
from rare.components.dialogs.launch_dialog import LaunchDialog
|
||||||
from rare.components.main_window import MainWindow
|
from rare.components.main_window import MainWindow
|
||||||
from rare.shared import (
|
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.utils import legendary_utils, config_helper, paths
|
||||||
from rare.widgets.rare_app import RareApp
|
from rare.widgets.rare_app import RareApp
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger("Rare")
|
logger = logging.getLogger("Rare")
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,49 +48,8 @@ def excepthook(exc_type, exc_value, exc_tb):
|
||||||
|
|
||||||
class App(RareApp):
|
class App(RareApp):
|
||||||
def __init__(self, args: Namespace):
|
def __init__(self, args: Namespace):
|
||||||
super(App, self).__init__(args)
|
log_file = "Rare_{0}.log"
|
||||||
|
super(App, self).__init__(args, log_file)
|
||||||
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()}")
|
|
||||||
|
|
||||||
self.rare_core = RareCore(args=args)
|
self.rare_core = RareCore(args=args)
|
||||||
self.args = ArgumentsSingleton()
|
self.args = ArgumentsSingleton()
|
||||||
self.signals = GlobalSignalsSingleton()
|
self.signals = GlobalSignalsSingleton()
|
||||||
|
|
|
@ -17,6 +17,8 @@ from .console import Console
|
||||||
from .lgd_helper import get_launch_args, InitArgs, get_configured_process, LaunchArgs, GameArgsError
|
from .lgd_helper import get_launch_args, InitArgs, get_configured_process, LaunchArgs, GameArgsError
|
||||||
from .message_models import ErrorModel, Actions, FinishedModel, BaseModel, StateChangedModel
|
from .message_models import ErrorModel, Actions, FinishedModel, BaseModel, StateChangedModel
|
||||||
|
|
||||||
|
logger = logging.getLogger("RareLauncher")
|
||||||
|
|
||||||
|
|
||||||
class PreLaunchThread(QRunnable):
|
class PreLaunchThread(QRunnable):
|
||||||
class Signals(QObject):
|
class Signals(QObject):
|
||||||
|
@ -65,7 +67,8 @@ class GameProcessApp(RareApp):
|
||||||
success: bool = True
|
success: bool = True
|
||||||
|
|
||||||
def __init__(self, args: Namespace):
|
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.game_process = QProcess()
|
||||||
self.app_name = args.app_name
|
self.app_name = args.app_name
|
||||||
self.logger = getLogger(self.app_name)
|
self.logger = getLogger(self.app_name)
|
||||||
|
@ -206,10 +209,6 @@ class GameProcessApp(RareApp):
|
||||||
|
|
||||||
def start_game(args: Namespace):
|
def start_game(args: Namespace):
|
||||||
args = InitArgs.from_argparse(args)
|
args = InitArgs.from_argparse(args)
|
||||||
logging.basicConfig(
|
|
||||||
format="[%(name)s] %(levelname)s: %(message)s",
|
|
||||||
level=logging.INFO,
|
|
||||||
)
|
|
||||||
|
|
||||||
app = GameProcessApp(args)
|
app = GameProcessApp(args)
|
||||||
app.setQuitOnLastWindowClosed(True)
|
app.setQuitOnLastWindowClosed(True)
|
||||||
|
|
|
@ -25,6 +25,7 @@ class InitArgs:
|
||||||
skip_version_check: bool = False
|
skip_version_check: bool = False
|
||||||
wine_prefix: str = ""
|
wine_prefix: str = ""
|
||||||
wine_bin: str = ""
|
wine_bin: str = ""
|
||||||
|
debug: str = ""
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_argparse(cls, args):
|
def from_argparse(cls, args):
|
||||||
|
@ -33,7 +34,8 @@ class InitArgs:
|
||||||
offline=args.offline,
|
offline=args.offline,
|
||||||
skip_version_check=args.skip_update_check,
|
skip_version_check=args.skip_update_check,
|
||||||
wine_bin=args.wine_bin,
|
wine_bin=args.wine_bin,
|
||||||
wine_prefix=args.wine_pfx
|
wine_prefix=args.wine_pfx,
|
||||||
|
debug=args.debug,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import platform
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
from argparse import Namespace
|
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.QtGui import QIcon
|
||||||
from PyQt5.QtWidgets import QApplication
|
from PyQt5.QtWidgets import QApplication
|
||||||
|
|
||||||
# noinspection PyUnresolvedReferences
|
|
||||||
from legendary.core import LegendaryCore
|
|
||||||
|
|
||||||
import rare.resources.resources
|
import rare.resources.resources
|
||||||
from rare.utils import paths
|
from rare.utils import paths
|
||||||
from rare.utils.misc import set_color_pallete, set_style_sheet
|
from rare.utils.misc import set_color_pallete, set_style_sheet
|
||||||
|
|
||||||
|
|
||||||
class RareApp(QApplication):
|
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)
|
super(RareApp, self).__init__(sys.argv)
|
||||||
self.setQuitOnLastWindowClosed(False)
|
self.setQuitOnLastWindowClosed(False)
|
||||||
if hasattr(Qt, "AA_UseHighDpiPixmaps"):
|
if hasattr(Qt, "AA_UseHighDpiPixmaps"):
|
||||||
|
@ -26,7 +26,53 @@ class RareApp(QApplication):
|
||||||
|
|
||||||
self.setApplicationName("Rare")
|
self.setApplicationName("Rare")
|
||||||
self.setOrganizationName("Rare")
|
self.setOrganizationName("Rare")
|
||||||
|
|
||||||
|
# Create directories after QStandardPaths has been initialized
|
||||||
paths.create_dirs()
|
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()
|
self.settings = QSettings()
|
||||||
|
|
||||||
# Translator
|
# Translator
|
||||||
|
|
Loading…
Reference in a new issue