feat(cli): added --debug-level= argument

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
2025-09-23 00:14:51 +05:00
parent 8e25c04f56
commit 5a2ab36b60
3 changed files with 40 additions and 12 deletions

View File

@@ -4,11 +4,9 @@ from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QIcon
from portprotonqt.main_window import MainWindow
from portprotonqt.config_utils import save_fullscreen_config
from portprotonqt.logger import get_logger
from portprotonqt.logger import get_logger, setup_logger
from portprotonqt.cli import parse_args
logger = get_logger(__name__)
__app_id__ = "ru.linux_gaming.PortProtonQt"
__app_name__ = "PortProtonQt"
__app_version__ = "0.1.5"
@@ -20,6 +18,14 @@ def main():
app.setApplicationName(__app_name__)
app.setApplicationVersion(__app_version__)
args = parse_args()
# Setup logger with specified debug level
setup_logger(args.debug_level)
# Reinitialize logger after setup to ensure it uses the new configuration
logger = get_logger(__name__)
system_locale = QLocale.system()
qt_translator = QTranslator()
translations_path = QLibraryInfo.path(QLibraryInfo.LibraryPath.TranslationsPath)
@@ -28,8 +34,6 @@ def main():
else:
logger.warning(f"Qt translations for {system_locale.name()} not found in {translations_path}, using english language")
args = parse_args()
window = MainWindow(app_name=__app_name__)
if args.fullscreen:

View File

@@ -13,4 +13,10 @@ def parse_args():
action="store_true",
help="Запустить приложение в полноэкранном режиме и сохранить эту настройку"
)
parser.add_argument(
"--debug-level",
choices=['ALL', 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'],
default='NOTSET',
help="Установить уровень логирования (ALL для всех сообщений, по умолчанию: без логов)"
)
return parser.parse_args()

View File

@@ -1,9 +1,27 @@
import logging
def setup_logger():
def setup_logger(level='NOTSET'):
"""Настройка базовой конфигурации логирования."""
# Clear existing handlers to prevent duplicates
root_logger = logging.getLogger()
for handler in root_logger.handlers[:]:
root_logger.removeHandler(handler)
# Convert string level to logging level constant, map ALL to DEBUG
if level.upper() == 'ALL':
log_level = logging.DEBUG
else:
log_level = getattr(logging, level.upper(), logging.NOTSET)
# Configure logging with null handler if level is NOTSET
if log_level == logging.NOTSET:
logging.basicConfig(
level=logging.INFO,
level=logging.NOTSET,
handlers=[logging.NullHandler()]
)
else:
logging.basicConfig(
level=log_level,
format='[%(levelname)s] %(message)s',
handlers=[logging.StreamHandler()]
)
@@ -12,5 +30,5 @@ def get_logger(name):
"""Возвращает логгер для указанного модуля."""
return logging.getLogger(name)
# Инициализация логгера при импорте модуля
# Инициализация логгера при импорте модуля (без логов по умолчанию)
setup_logger()