From e6bbc469b1632f52c27832986c37ae360ee5c6cf Mon Sep 17 00:00:00 2001 From: WorldTeacher Date: Mon, 28 Apr 2025 10:43:45 +0200 Subject: [PATCH] update logging to be on a per file basis --- src/backend/semester.py | 13 ++++++++++++- src/logic/webrequest.py | 16 +++++++++++++++- src/ui/dialogs/login.py | 13 ++++++++++++- src/ui/dialogs/mail.py | 17 ++++++++++++++++- src/ui/dialogs/mailTemplate.py | 18 +++++++++++++++++- src/ui/dialogs/parsed_titles.py | 15 +++++++++++---- src/ui/dialogs/settings.py | 15 ++++++++++++++- src/ui/widgets/MessageCalendar.py | 11 ++++++++++- src/ui/widgets/admin_edit_prof.py | 11 ++++++++++- src/ui/widgets/elsa_main.py | 10 +++++++++- src/ui/widgets/iconLine.py | 12 +++++++++++- src/ui/widgets/searchPage.py | 12 +++++++++++- 12 files changed, 148 insertions(+), 15 deletions(-) diff --git a/src/backend/semester.py b/src/backend/semester.py index fadbae6..b167cec 100644 --- a/src/backend/semester.py +++ b/src/backend/semester.py @@ -1,6 +1,16 @@ import datetime -from src import logger + from dataclasses import dataclass +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) + + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) @dataclass @@ -14,6 +24,7 @@ class Semester: logger.debug( f"Initialized Semester class with values: month: {_month}, semester: {_semester}, year {_year}" ) + def __post_init__(self): if isinstance(self._year, str): self._year = int(self._year) diff --git a/src/logic/webrequest.py b/src/logic/webrequest.py index 4a90e71..142d962 100644 --- a/src/logic/webrequest.py +++ b/src/logic/webrequest.py @@ -1,6 +1,6 @@ import requests from bs4 import BeautifulSoup -from src import logger + # import sleep_and_retry decorator to retry requests from ratelimit import limits, sleep_and_retry @@ -8,6 +8,20 @@ from ratelimit import limits, sleep_and_retry from src.logic.dataclass import BookData from src.transformers import ARRAYData, BibTeXData, COinSData, RDSData, RISData +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) +log.add( + f"logs/webrequest.log", + rotation="1 day", + compression="zip", +) + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) API_URL = "https://rds.ibs-bw.de/phfreiburg/opac/RDSIndexrecord/{}/" diff --git a/src/ui/dialogs/login.py b/src/ui/dialogs/login.py index 74c9708..59a5a61 100644 --- a/src/ui/dialogs/login.py +++ b/src/ui/dialogs/login.py @@ -2,11 +2,22 @@ import hashlib from PyQt6 import QtCore, QtWidgets -from src import Icon, logger + from src.backend.admin_console import AdminCommands from src.backend.database import Database from .dialog_sources.Ui_login import Ui_Dialog +import sys +from loguru import logger as log +from src import Icon + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) + + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) class LoginDialog(Ui_Dialog): diff --git a/src/ui/dialogs/mail.py b/src/ui/dialogs/mail.py index 8e9f3db..1a42836 100644 --- a/src/ui/dialogs/mail.py +++ b/src/ui/dialogs/mail.py @@ -3,11 +3,26 @@ import sys from PyQt6 import QtWidgets -from src import Icon, settings as config, logger +from src import Icon, settings as config from .dialog_sources.Ui_mail_preview import Ui_eMailPreview as MailPreviewDialog from .mailTemplate import MailTemplateDialog +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) +log.add( + "logs/mail.log", + rotation="1 day", + compression="zip", + enqueue=True, +) + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) empty_signature = """ diff --git a/src/ui/dialogs/mailTemplate.py b/src/ui/dialogs/mailTemplate.py index 15786b9..b2f0ce1 100644 --- a/src/ui/dialogs/mailTemplate.py +++ b/src/ui/dialogs/mailTemplate.py @@ -5,10 +5,25 @@ from PyQt6 import QtGui, QtWidgets, QtCore from src import Icon from .dialog_sources import NewMailTemplateDesignerDialog -from src import logger + +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) +log.add( + f"logs/mail.log", + enqueue=True, +) + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) + class MailTemplateDialog(QtWidgets.QDialog, NewMailTemplateDesignerDialog): updateSignal = QtCore.pyqtSignal() + def __init__(self, parent=None) -> None: super().__init__(parent) self.setupUi(self) @@ -38,6 +53,7 @@ class MailTemplateDialog(QtWidgets.QDialog, NewMailTemplateDesignerDialog): QtWidgets.QDialogButtonBox.StandardButton.Cancel ).clicked.connect(self.closeNow) logger.info("Mail template dialog setup complete") + def save_template(self): # print("save triggered") # create a dialog to ask for the name of the template diff --git a/src/ui/dialogs/parsed_titles.py b/src/ui/dialogs/parsed_titles.py index ece3c57..be4f464 100644 --- a/src/ui/dialogs/parsed_titles.py +++ b/src/ui/dialogs/parsed_titles.py @@ -4,6 +4,13 @@ from src.backend import AutoAdder from .dialog_sources.Ui_parsed_titles import Ui_Form +import loguru +import sys + +log = loguru.logger +log.remove() +log.add("application.log", rotation="1 week", retention="1 month") +log.add(sys.stdout, level="INFO") class ParsedTitles(QtWidgets.QWidget, Ui_Form): @@ -33,7 +40,7 @@ class ParsedTitles(QtWidgets.QWidget, Ui_Form): self.worker = None def start(self): - logger.info("Starting AutoAdder") + log.info("Starting AutoAdder") self.worker = AutoAdder( data=self.signatures, @@ -52,8 +59,8 @@ class ParsedTitles(QtWidgets.QWidget, Ui_Form): self.worker.start() def on_completion(self): - logger.info("AutoAdder finished") - logger.info("Returning data") + log.info("AutoAdder finished") + log.info("Returning data") # create a function that closes the dialog @@ -62,7 +69,7 @@ class ParsedTitles(QtWidgets.QWidget, Ui_Form): length = self.listWidget.count() # print(f"Length of listWidget: {length}") if length == 0: - logger.info("AutoAdder finished") + log.info("AutoAdder finished") self.buttonBox.accepted.emit() def update_lists(self, signal): diff --git a/src/ui/dialogs/settings.py b/src/ui/dialogs/settings.py index 364f331..f83328e 100644 --- a/src/ui/dialogs/settings.py +++ b/src/ui/dialogs/settings.py @@ -1,7 +1,20 @@ from PyQt6 import QtCore, QtGui, QtWidgets -from src import Icon, settings, logger +from src import Icon, settings from .dialog_sources.Ui_settings import Ui_Dialog as _settings from src.ui.widgets.iconLine import IconWidget +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) +log.add( + f"logs/settings.log", +) + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) + base = """' diff --git a/src/ui/widgets/MessageCalendar.py b/src/ui/widgets/MessageCalendar.py index 44ec907..bbc6ec8 100644 --- a/src/ui/widgets/MessageCalendar.py +++ b/src/ui/widgets/MessageCalendar.py @@ -1,9 +1,18 @@ -from src import logger from PyQt6 import QtWidgets, QtCore from PyQt6.QtCore import QDate from PyQt6.QtGui import QColor, QPen from src.backend import Database import darkdetect +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) + + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) color = "#ddfb00" if darkdetect.isDark() else "#2204ff" pen = QPen(QColor(color)) diff --git a/src/ui/widgets/admin_edit_prof.py b/src/ui/widgets/admin_edit_prof.py index e3a0870..612c1e3 100644 --- a/src/ui/widgets/admin_edit_prof.py +++ b/src/ui/widgets/admin_edit_prof.py @@ -1,8 +1,17 @@ from .widget_sources.Ui_admin_edit_prof import Ui_Dialog # from PyQt6 import QtWidgets -from src import logger + from src.logic import Prof from src.backend import Database +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) class EditProf(QtWidgets.QDialog, Ui_Dialog): diff --git a/src/ui/widgets/elsa_main.py b/src/ui/widgets/elsa_main.py index 28b5510..31233a4 100644 --- a/src/ui/widgets/elsa_main.py +++ b/src/ui/widgets/elsa_main.py @@ -4,11 +4,19 @@ from .widget_sources.Ui_elsa_maindialog import Ui_Dialog from PyQt6 import QtCore, QtWidgets, QtGui from PyQt6.QtGui import QRegularExpressionValidator from PyQt6.QtCore import QDate -from src import Icon, logger +from src import Icon from src.backend import Semester, Database from src.logic import elsa_word_to_csv, Prof from src.ui.dialogs import ElsaAddEntry, popus_confirm from src.ui.widgets import FilePicker, DataGraph +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) +log.add("logs/elsa_main.log", enqueue=True) +logger.add(sys.stdout) class ElsaDialog(QtWidgets.QDialog, Ui_Dialog): diff --git a/src/ui/widgets/iconLine.py b/src/ui/widgets/iconLine.py index 5beb729..a04c13c 100644 --- a/src/ui/widgets/iconLine.py +++ b/src/ui/widgets/iconLine.py @@ -1,6 +1,16 @@ from .widget_sources.Ui_icon_widget import Ui_Dialog from PyQt6 import QtWidgets -from src import logger + +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) + + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) class IconWidget(QtWidgets.QWidget, Ui_Dialog): diff --git a/src/ui/widgets/searchPage.py b/src/ui/widgets/searchPage.py index d622154..68d9c48 100644 --- a/src/ui/widgets/searchPage.py +++ b/src/ui/widgets/searchPage.py @@ -2,12 +2,22 @@ from .widget_sources.Ui_search_statistic_page import Ui_Dialog from PyQt6 import QtWidgets, QtGui, QtCore from PyQt6.QtCore import pyqtSignal from src.backend import Database, Semester -from src import logger + from src.logic import custom_sort, Prof, sort_semesters_list from src.ui.dialogs import Mail_Dialog, ApparatExtendDialog, reminder_ui from src.ui.widgets import DataGraph, StatusWidget from natsort import natsorted +import sys +from loguru import logger as log + +logger = log +logger.remove() +logger.add("logs/application.log", rotation="1 week", enqueue=True) +log.add("logs/searchPage.log", enqueue=True) + +# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO") +logger.add(sys.stdout) class MyComboBox(QtWidgets.QComboBox):