Add logging to mainwindow and clean up logging code

This commit is contained in:
Tim Bentley 2018-02-03 11:24:39 +00:00
parent 6ff1015205
commit 6c8ec8a840
3 changed files with 55 additions and 49 deletions

View File

@ -56,7 +56,10 @@ class LogMixin(object):
def wrapped(*args, **kwargs):
parent.logger.debug("Entering {function}".format(function=func.__name__))
try:
return func(*args, **kwargs)
if len(inspect.signature(func).parameters.values()):
return func(*args, **kwargs)
else:
return func(*args)
except Exception as e:
if parent.logger.getEffectiveLevel() <= logging.ERROR:
parent.logger.error('Exception in {function} : {error}'.format(function=func.__name__,
@ -89,6 +92,13 @@ class LogMixin(object):
trace_error_handler(self.logger)
self.logger.error(message)
def log_critical(self, message):
"""
Common log critical handler which prints the calling path
"""
trace_error_handler(self.logger)
self.logger.critical(message)
def log_exception(self, message):
"""
Common log exception handler which prints the calling path

View File

@ -56,7 +56,7 @@ from openlp.core.version import get_version
from openlp.core.widgets.dialogs import FileDialog
from openlp.core.widgets.docks import OpenLPDockWidget, MediaDockManager
log = logging.getLogger(__name__)
#log = logging.getLogger(__name__)
class Ui_MainWindow(object):
@ -465,12 +465,10 @@ class Ui_MainWindow(object):
self.mode_live_item.setStatusTip(translate('OpenLP.MainWindow', 'Use layout that focuses on Live.'))
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMixin):
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, LogMixin, RegistryProperties):
"""
The main window.
"""
log.info('MainWindow loaded')
def __init__(self):
"""
This constructor sets up the interface, the various managers, and the plugins.
@ -557,7 +555,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
wait_dialog.setCancelButton(None)
wait_dialog.show()
for thread_name in self.application.worker_threads.keys():
log.debug('Waiting for thread %s', thread_name)
self.log_debug('Waiting for thread %s' % thread_name)
self.application.processEvents()
thread = self.application.worker_threads[thread_name]['thread']
worker = self.application.worker_threads[thread_name]['worker']
@ -595,7 +593,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
"""
Called on start up to restore the last active media plugin.
"""
log.info('Load data from Settings')
self.log_info('Load data from Settings')
if Settings().value('advanced/save current plugin'):
saved_plugin_id = Settings().value('advanced/current media plugin')
if saved_plugin_id != -1:
@ -627,7 +625,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
:param version: The Version to be displayed.
"""
log.debug('version_notice')
version_text = translate('OpenLP.MainWindow', 'Version {new} of OpenLP is now available for download (you are '
'currently running version {current}). \n\nYou can download the latest version from '
'http://openlp.org/.').format(new=version, current=get_version()[u'full'])
@ -774,7 +771,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
self.application.splash.close()
QtWidgets.QMessageBox.information(self, title, message)
def on_help_web_site_clicked(self):
@staticmethod
def on_help_web_site_clicked():
"""
Load the OpenLP website
"""
@ -891,7 +889,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
settings = Settings()
import_settings = Settings(str(temp_config_path), Settings.IniFormat)
log.info('hook upgrade_plugin_settings')
self.log_info('hook upgrade_plugin_settings')
self.plugin_manager.hook_upgrade_plugin_settings(import_settings)
# Upgrade settings to prepare the import.
if import_settings.can_upgrade():
@ -929,7 +927,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
value = import_settings.value(section_key)
except KeyError:
value = None
log.warning('The key "{key}" does not exist (anymore), so it will be skipped.'.format(key=section_key))
self.log_warning('The key "{key}" does not exist (anymore), so it will be skipped.'.
format(key=section_key))
if value is not None:
settings.setValue('{key}'.format(key=section_key), value)
now = datetime.now()
@ -1013,7 +1012,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
"""
The screen has changed so we have to update components such as the renderer.
"""
log.debug('screen_changed')
self.application.set_busy_cursor()
self.image_manager.update_display()
self.renderer.update_display()
@ -1076,7 +1074,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
if Settings().value('advanced/save current plugin'):
Settings().setValue('advanced/current media plugin', self.media_tool_box.currentIndex())
# Call the cleanup method to shutdown plugins.
log.info('cleanup plugins')
self.log_info('cleanup plugins')
self.plugin_manager.finalise_plugins()
if save_settings:
# Save settings
@ -1216,7 +1214,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
"""
Load the main window settings.
"""
log.debug('Loading QSettings')
settings = Settings()
# Remove obsolete entries.
settings.remove('custom slide')
@ -1243,7 +1240,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
# Exit if we just did a settings import.
if self.settings_imported:
return
log.debug('Saving QSettings')
settings = Settings()
settings.beginGroup(self.general_settings_section)
settings.setValue('recent files', self.recent_files)
@ -1268,7 +1264,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
if not recent_path.is_file():
continue
count += 1
log.debug('Recent file name: {name}'.format(name=recent_path))
self.log_debug('Recent file name: {name}'.format(name=recent_path))
action = create_action(self, '',
text='&{n} {name}'.format(n=count, name=recent_path.name),
data=recent_path, triggers=self.service_manager_contents.on_recent_service_clicked)
@ -1348,21 +1344,21 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
"""
Change the data directory.
"""
log.info('Changing data path to {newpath}'.format(newpath=self.new_data_path))
self.log_info('Changing data path to {newpath}'.format(newpath=self.new_data_path))
old_data_path = AppLocation.get_data_path()
# Copy OpenLP data to new location if requested.
self.application.set_busy_cursor()
if self.copy_data:
log.info('Copying data to new path')
self.log_info('Copying data to new path')
try:
self.show_status_message(
translate('OpenLP.MainWindow', 'Copying OpenLP data to new data directory location - {path} '
'- Please wait for copy to finish').format(path=self.new_data_path))
dir_util.copy_tree(str(old_data_path), str(self.new_data_path))
log.info('Copy successful')
self.log_info('Copy successful')
except (OSError, DistutilsFileError) as why:
self.application.set_normal_cursor()
log.exception('Data copy failed {err}'.format(err=str(why)))
self.log_exception('Data copy failed {err}'.format(err=str(why)))
err_text = translate('OpenLP.MainWindow',
'OpenLP Data directory copy failed\n\n{err}').format(err=str(why)),
QtWidgets.QMessageBox.critical(self, translate('OpenLP.MainWindow', 'New Data Directory Error'),
@ -1370,7 +1366,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow, RegistryProperties, LogMi
QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Ok))
return False
else:
log.info('No data copy requested')
self.log_info('No data copy requested')
# Change the location of data directory in config file.
settings = QtCore.QSettings()
settings.setValue('advanced/data path', self.new_data_path)

View File

@ -299,7 +299,7 @@ class Ui_ServiceManager(object):
class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixin, RegistryProperties):
"""
Manages the services. This involves taking text strings from plugins and adding them to the service. This service
can then be zipped up with all the resources used into one OSZ or oszl file for use on any OpenLP v2 installation.
can then be zipped up with all the resources used into one OSZ or OSZL file for use on any OpenLP installation.
Also handles the UI tasks of moving things up and down etc.
"""
servicemanager_set_item = QtCore.pyqtSignal(int)
@ -412,7 +412,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
if suffix not in self.suffixes:
self.suffixes.append(suffix)
def on_new_service_clicked(self, field=None):
def on_new_service_clicked(self):
"""
Create a new service.
:param field:
@ -463,7 +463,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
QtWidgets.QMessageBox.Save | QtWidgets.QMessageBox.Discard |
QtWidgets.QMessageBox.Cancel, QtWidgets.QMessageBox.Save)
def on_recent_service_clicked(self, field=None):
def on_recent_service_clicked(self):
"""
Load a recent file as the service triggered by mainwindow recent service list.
:param field:
@ -503,7 +503,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
service.append({'openlp_core': core})
return service
def save_file(self, field=None):
def save_file(self):
"""
Save the current service file.
@ -684,7 +684,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
delete_file(Path(temp_file_name))
return success
def save_file_as(self, field=None):
def save_file_as(self):
"""
Get a file name and then call :func:`ServiceManager.save_file` to save the file.
"""
@ -736,7 +736,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.set_file_name(file_path)
self.decide_save_method()
def decide_save_method(self, field=None):
def decide_save_method(self):
"""
Determine which type of save method to use.
:param field:
@ -937,7 +937,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
theme_action.setChecked(True)
self.menu.exec(self.service_manager_list.mapToGlobal(point))
def on_service_item_note_form(self, field=None):
def on_service_item_note_form(self):
"""
Allow the service note to be edited
:param field:
@ -949,7 +949,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.repaint_service_list(item, -1)
self.set_modified()
def on_start_time_form(self, field=None):
def on_start_time_form(self):
"""
Opens a dialog to type in service item notes.
:param field:
@ -959,7 +959,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
if self.start_time_form.exec():
self.repaint_service_list(item, -1)
def toggle_auto_play_slides_once(self, field=None):
def toggle_auto_play_slides_once(self):
"""
Toggle Auto play slide once. Inverts auto play once option for the item
@ -976,7 +976,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.main_window.general_settings_section + '/loop delay')
self.set_modified()
def toggle_auto_play_slides_loop(self, field=None):
def toggle_auto_play_slides_loop(self):
"""
Toggle Auto play slide loop.
@ -993,7 +993,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.main_window.general_settings_section + '/loop delay')
self.set_modified()
def on_timed_slide_interval(self, field=None):
def on_timed_slide_interval(self):
"""
Shows input dialog for enter interval in seconds for delay
:param field:
@ -1019,7 +1019,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
service_item.auto_play_slides_once = False
self.set_modified()
def on_auto_start(self, field=None):
def on_auto_start(self):
"""
Toggles to Auto Start Setting.
"""
@ -1027,7 +1027,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.service_items[item]['service_item'].will_auto_start = \
not self.service_items[item]['service_item'].will_auto_start
def on_service_item_edit_form(self, field=None):
def on_service_item_edit_form(self):
"""
Opens a dialog to edit the service item and update the service display if changes are saved.
:param field:
@ -1103,7 +1103,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
prev_item_last_slide = service_iterator.value()
service_iterator += 1
def on_set_item(self, message, field=None):
def on_set_item(self, message):
"""
Called by a signal to select a specific item and make it live usually from remote.
@ -1173,7 +1173,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.service_manager.collapsed(item.parent())
self.service_manager_list.setCurrentItem(item.parent())
def on_collapse_all(self, field=None):
def on_collapse_all(self):
"""
Collapse all the service items.
:param field:
@ -1193,7 +1193,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
if item.childCount():
self.service_items[pos - 1]['expanded'] = False
def on_expand_all(self, field=None):
def on_expand_all(self):
"""
Collapse all the service items.
:param field:
@ -1213,7 +1213,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
if item.childCount():
self.service_items[pos - 1]['expanded'] = True
def on_service_top(self, field=None):
def on_service_top(self):
"""
Move the current ServiceItem to the top of the list.
:param field:
@ -1226,7 +1226,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.repaint_service_list(0, child)
self.set_modified()
def on_service_up(self, field=None):
def on_service_up(self):
"""
Move the current ServiceItem one position up in the list.
:param field:
@ -1239,7 +1239,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.repaint_service_list(item - 1, child)
self.set_modified()
def on_service_down(self, field=None):
def on_service_down(self):
"""
Move the current ServiceItem one position down in the list.
:param field:
@ -1252,7 +1252,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.repaint_service_list(item + 1, child)
self.set_modified()
def on_service_end(self, field=None):
def on_service_end(self):
"""
Move the current ServiceItem to the bottom of the list.
:param field:
@ -1265,7 +1265,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.repaint_service_list(len(self.service_items) - 1, child)
self.set_modified()
def on_delete_from_service(self, field=None):
def on_delete_from_service(self):
"""
Remove the current ServiceItem from the list.
:param field:
@ -1491,7 +1491,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.drop_position = -1
self.set_modified()
def make_preview(self, field=None):
def make_preview(self):
"""
Send the current item to the Preview slide controller
:param field:
@ -1516,7 +1516,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
else:
return self.service_items[item]['service_item']
def on_double_click_live(self, field=None):
def on_double_click_live(self):
"""
Send the current item to the Live slide controller but triggered by a tablewidget click event.
:param field:
@ -1524,7 +1524,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.list_double_clicked = True
self.make_live()
def on_single_click_preview(self, field=None):
def on_single_click_preview(self):
"""
If single click previewing is enabled, and triggered by a tablewidget click event,
start a timeout to verify a double-click hasn't triggered.
@ -1576,7 +1576,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
'is missing or inactive'))
self.application.set_normal_cursor()
def remote_edit(self, field=None):
def remote_edit(self):
"""
Triggers a remote edit to a plugin to allow item to be edited.
:param field:
@ -1588,7 +1588,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
if new_item:
self.add_service_item(new_item, replace=True)
def on_service_item_rename(self, field=None):
def on_service_item_rename(self):
"""
Opens a dialog to rename the service item.
@ -1606,7 +1606,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.repaint_service_list(item, -1)
self.set_modified()
def create_custom(self, field=None):
def create_custom(self):
"""
Saves the current text item as a custom slide
:param field:
@ -1726,7 +1726,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi
self.renderer.set_service_theme(self.service_theme)
self.regenerate_service_items()
def on_theme_change_action(self, field=None):
def on_theme_change_action(self):
"""
Handles theme change events