Skip to content

Commit 573cacc

Browse files
committed
Add Logging and Exception Handler
1 parent cf77a57 commit 573cacc

File tree

2 files changed

+57
-5
lines changed

2 files changed

+57
-5
lines changed

launch.pyw

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class LaunchDialog(QDialog, launch_dialog.Ui_Dialog):
1919
self.setupUi(self)
2020
import wincontext
2121
self.win = wincontext.WinContextApp(False)
22-
self.win.hide()
2322
self.initUI()
2423

2524
def initUI(self):

wincontext.py

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
import os
1212
import argparse
1313

14+
from datetime import datetime
15+
import logging
16+
import logging.handlers
17+
1418
import urllib.request
1519
import webbrowser
1620

@@ -46,9 +50,6 @@
4650
if not configPath.is_dir():
4751
os.mkdir(configLoc)
4852

49-
print(configLoc)
50-
51-
5253
class ComModes:
5354
BAT, List = range(2)
5455

@@ -60,13 +61,47 @@ class ComModes:
6061
class WinContextApp(QMainWindow, app.Ui_MainWindow):
6162
def __init__(self, direct):
6263
super(self.__class__, self).__init__()
64+
65+
logging.basicConfig(
66+
format='%(asctime)s %(message)s', datefmt='[%H:%M:%S]')
67+
format = logging.Formatter(
68+
'%(asctime)s %(message)s', datefmt='[%H:%M:%S]')
69+
70+
self.logger = logging.getLogger("debug_log")
71+
self.logger.setLevel(logging.DEBUG)
72+
73+
handler = logging.handlers.RotatingFileHandler(
74+
configLoc + "\\debug.log", backupCount=5)
75+
76+
self.logger.addHandler(handler)
77+
handler.setFormatter(format)
78+
79+
self.logger.debug(
80+
"Running pyWinContext v" + versionNumber
81+
+ " at " + datetime.now().ctime())
82+
self.logger.debug("Config Directory: " + configLoc)
83+
84+
sys.excepthook = self.logException
85+
6386
self.direct = direct
6487
self.hasChanges = False
6588
self.setupUi(self)
6689
self.treeWidget.setSortingEnabled(False)
6790
self.load()
6891
self.initUI()
6992

93+
def logException(self, exctype, value, tb):
94+
self.logger.debug("An Error Has Occured")
95+
self.logger.debug("Type: " + exctype.__name__)
96+
self.logger.debug("Value: " + str(value))
97+
self.logger.debug("Trace: " + str(tb))
98+
QMessageBox.critical(
99+
self, "An Unexpected Error Has Occured",
100+
"pyWinContext has encountered an unexpected error.\n\n"
101+
+ "Error: " + exctype.__name__ + "\n\n"
102+
+ str(value) + "\n" + str(tb)
103+
)
104+
70105
def closeEvent(self, event):
71106
if self.hasChanges:
72107
resBtn = QMessageBox.question(
@@ -218,13 +253,14 @@ def initUI(self):
218253
self.treeWidget.itemSelectionChanged.connect(self.action_select)
219254
self.comboBox.currentIndexChanged.connect(self.after_change)
220255
self.pushButton.clicked.connect(self.add_custom_filetype)
221-
self.show()
222256
self.statusBar().showMessage('Ready')
223257
self.progress = QProgressBar(self)
224258
self.progress.setEnabled(False)
225259
self.progress.setTextVisible(False)
226260
self.statusBar().addPermanentWidget(self.progress)
227261

262+
self.logger.debug("Loading Complete")
263+
228264
def load(self):
229265
config = Path(configLoc + "\\config.json")
230266
if config.is_file():
@@ -263,11 +299,15 @@ def set_progress(self, num):
263299
self.progress.repaint()
264300

265301
def action_save(self):
302+
self.logger.debug("Attempting Save")
303+
266304
self.setEnabled(False)
267305
self.progress.setEnabled(True)
268306
self.set_progress(0)
269307
data = self.get_save_data()
308+
self.logger.debug("Retrieved Save Data")
270309
self.set_progress(5)
310+
271311
oldData = None
272312
config = Path(configLoc + "\\config.json")
273313
configBak = Path(configLoc + "\\config.json.bak")
@@ -276,22 +316,32 @@ def action_save(self):
276316
oldData = json.loads(oldFile.read(), object_pairs_hook=OrderedDict)
277317
oldFile.close()
278318
config.replace(configBak)
319+
self.logger.debug("Backed Up Config Data")
320+
279321
file = open(configLoc + "\\config.json", 'w')
280322
file.write(json.dumps(data, indent=4))
281323
file.close()
282324
output.configLoc = configLoc
283325
output.ComModes = ComModes
284326
self.set_progress(10)
327+
328+
self.logger.debug("Starting Save...")
329+
output.logger = self.logger
330+
285331
if self.direct:
286332
output.direct_save(data, oldData, self)
287333
else:
288334
output.reg_save(data, oldData, self)
335+
289336
self.hasChanges = False
290337
self.setWindowTitle('pyWinContext')
291338
self.set_progress(100)
292339
self.progress.setEnabled(False)
293340
self.set_progress(0)
294341
self.setEnabled(True)
342+
343+
self.logger.debug("Save Successful")
344+
295345
return True
296346

297347
def action_import(self):
@@ -301,13 +351,16 @@ def action_export(self):
301351
pass
302352

303353
def check_updates(self):
354+
self.logger.debug("Checking for updates...")
304355
release = self.find_later_release()
305356
if release is False:
357+
self.logger.debug("Latest release")
306358
QMessageBox.information(
307359
self, "Check for Updates",
308360
"There are no new updates at this time."
309361
)
310362
else:
363+
self.logger.debug("Version " + release + " is available")
311364
box = QMessageBox(self)
312365
box.setText(
313366
"An update is available! It is available at\n"

0 commit comments

Comments
 (0)