Ich habe in meine Anwendung ein globales Logging eingefügt. Die Logging-Nachrichten werden zum einen an einen "logging.Streamhandler" zum anderen an einen "logging.FileHandler" übergeben.
Der Streamhandler fügt die Loggings gefiltert in ein Text-Widget der GUI (Tkinter) ein. Diese dienen der Information des Users und sagen ihm was gerade im Detail berechnet/ersetzt/geändert wurde.
Der Filehandler schreibt alle (ungefiltert) Logging-Nachrichten in eine Logging-Datei im Userverzeichnis. (Sowohl die Infos an den User als auch Debug- oder Fehlermeldungen) Dies soll mir dabei helfen auftretende Probleme besser nachvollziehen zu können, um die Anwendung später zu optimieren.
Der Logger steht momentan auf Modulebene im Controller:
Code: Alles auswählen
import logging
import os
application_logger = logging.getLogger('statuslogger')
application_logger.setLevel(logging.DEBUG)
log_formatter = logging.Formatter(fmt='%(asctime)s [%(levelname)-7s] in %(module)s.%(funcName)s@line:%(lineno)d --> %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(log_formatter)
home_dir = os.path.expanduser('~')
app_folder = os.path.join(home_dir, 'Prepro')
try:
os.mkdir(app_folder)
except FileExistsError:
print('folder already exists') # edit exception handling later
filename = os.path.join(app_folder, 'prepro.log')
file_handler = logging.FileHandler(filename)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(log_formatter)
application_logger.addHandler(console_handler)
application_logger.addHandler(file_handler)
(z.b. im View)
Code: Alles auswählen
application_logger = logging.getLogger('statuslogger')
# ...
Was mir persönlich noch nicht gefällt, ist der umfangreiche Code auf Modulebene in der controller.py.
Gruß Seb