Introduce proper logging

Replace all print() and sys.stderr.write() with logger.info() and logger.warning() respectively
This commit is contained in:
norohind 2021-07-01 11:45:12 +03:00
parent 19a85934ed
commit 743d14212d
Signed by: norohind
GPG Key ID: 01C3BECC26FB59E1
3 changed files with 42 additions and 32 deletions

View File

@ -9,6 +9,13 @@ from tkinter import *
from SpanshRouter.PlaceHolder import PlaceHolder from SpanshRouter.PlaceHolder import PlaceHolder
import queue import queue
import logging
from config import appname
# We need a name of plugin dir, not AutoCompleter.py dir
plugin_name = os.path.basename(os.path.dirname(os.path.dirname(__file__)))
logger = logging.getLogger(f'{appname}.{plugin_name}')
class AutoCompleter(PlaceHolder): class AutoCompleter(PlaceHolder):
def __init__(self, parent, placeholder, **kw): def __init__(self, parent, placeholder, **kw):
@ -160,7 +167,7 @@ class AutoCompleter(PlaceHolder):
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))
def write(self, lista): def write(self, lista):
self.queue.put(lista) self.queue.put(lista)

View File

@ -22,15 +22,11 @@ from tkinter import *
import logging import logging
from config import appname from config import appname
# This could also be returned from plugin_start3() # We need a name of plugin dir, not SpanshRouter.py dir
plugin_name = os.path.basename(os.path.dirname(__file__)) plugin_name = os.path.basename(os.path.dirname(os.path.dirname(__file__)))
# A Logger is used per 'found' plugin to make it easy to include the plugin's
# folder name in the logging output format.
# NB: plugin_name here *must* be the plugin's folder name as per the preceding
# code, else the logger won't be properly set up.
logger = logging.getLogger(f'{appname}.{plugin_name}') logger = logging.getLogger(f'{appname}.{plugin_name}')
class SpanshRouter(): class SpanshRouter():
def __init__(self, plugin_dir): def __init__(self, plugin_dir):
version_file = os.path.join(plugin_dir, "version.json") version_file = os.path.join(plugin_dir, "version.json")
@ -333,11 +329,11 @@ class SpanshRouter():
self.update_gui() self.update_gui()
except IOError: except IOError:
print("No previously saved route.") logger.info("No previously saved route")
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))
def copy_waypoint(self): def copy_waypoint(self):
if sys.platform == "linux" or sys.platform == "linux2": if sys.platform == "linux" or sys.platform == "linux2":
@ -424,7 +420,7 @@ class SpanshRouter():
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))
self.enable_plot_gui(True) self.enable_plot_gui(True)
self.show_error("(1) An error occured while reading the file.") self.show_error("(1) An error occured while reading the file.")
@ -608,7 +604,7 @@ class SpanshRouter():
self.update_gui() self.update_gui()
self.save_all_route() self.save_all_route()
else: else:
sys.stderr.write("Failed to query plotted route from Spansh: code " + str(route_response.status_code) + route_response.text + '\n') logger.warning(f"Failed to query plotted route from Spansh, code: {str(route_response.status_code)}; text: {route_response.text}")
self.enable_plot_gui(True) self.enable_plot_gui(True)
failure = json.loads(results.content) failure = json.loads(results.content)
@ -621,11 +617,11 @@ class SpanshRouter():
else: else:
self.show_error(self.plot_error) self.show_error(self.plot_error)
else: else:
sys.stderr.write("Query to Spansh timed out") logger.warning("Query to Spansh timed out")
self.enable_plot_gui(True) self.enable_plot_gui(True)
self.show_error("The query to Spansh was too long and timed out, please try again.") self.show_error("The query to Spansh was too long and timed out, please try again.")
else: else:
sys.stderr.write("Failed to query plotted route from Spansh: code " + str(results.status_code) + results.text + '\n') logger.warning(f"Failed to query plotted route from Spansh: code {str(results.status_code)}; text: {results.text}")
self.enable_plot_gui(True) self.enable_plot_gui(True)
failure = json.loads(results.content) failure = json.loads(results.content)
@ -641,7 +637,7 @@ class SpanshRouter():
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))
self.enable_plot_gui(True) self.enable_plot_gui(True)
self.show_error(self.plot_error) self.show_error(self.plot_error)
@ -668,14 +664,13 @@ class SpanshRouter():
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))
self.enable_plot_gui(True) self.enable_plot_gui(True)
self.show_error("(2) An error occured while reading the file.") self.show_error("(2) An error occured while reading the file.")
def export_route(self): def export_route(self):
if self.route.__len__() == 0: if self.route.__len__() == 0:
#logger.info("No route to export") logger.info("No route to export")
print("No route to export")
return return
route_start = self.route[0][0] route_start = self.route[0][0]
@ -711,11 +706,11 @@ class SpanshRouter():
try: try:
os.remove(self.save_route_path) os.remove(self.save_route_path)
except: except:
print("No route to delete") logger.info("No route to delete")
try: try:
os.remove(self.offset_file_path) os.remove(self.offset_file_path)
except: except:
print("No offset file to delete") logger.info("No offset file to delete")
self.update_gui() self.update_gui()
@ -758,7 +753,7 @@ class SpanshRouter():
try: try:
os.remove(self.save_route_path) os.remove(self.save_route_path)
except: except:
print("No route to delete") logger.info("No route to delete")
def save_offset(self): def save_offset(self):
if self.route.__len__() != 0: if self.route.__len__() != 0:
@ -768,7 +763,7 @@ class SpanshRouter():
try: try:
os.remove(self.offset_file_path) os.remove(self.offset_file_path)
except: except:
print("No offset to delete") logger.info("No offset to delete")
def update_bodies_text(self): def update_bodies_text(self):
if not self.roadtoriches: return if not self.roadtoriches: return
@ -835,7 +830,7 @@ class SpanshRouter():
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))
def check_for_update(self): def check_for_update(self):
self.cleanup_old_version() self.cleanup_old_version()
@ -848,11 +843,11 @@ class SpanshRouter():
self.spansh_updater = SpanshUpdater(response.text, self.plugin_dir) self.spansh_updater = SpanshUpdater(response.text, self.plugin_dir)
else: else:
sys.stderr.write("Could not query latest SpanshRouter version: " + str(response.status_code) + response.text) logger.warning(f"Could not query latest SpanshRouter version, code: {str(response.status_code)}; text: {response.text}")
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))
def install_update(self): def install_update(self):
self.spansh_updater.install() self.spansh_updater.install()

View File

@ -5,6 +5,14 @@ import sys
import traceback import traceback
import json import json
import logging
from config import appname
# We need a name of plugin dir, not SpanshRouter.py dir
plugin_name = os.path.basename(os.path.dirname(os.path.dirname(__file__)))
logger = logging.getLogger(f'{appname}.{plugin_name}')
class SpanshUpdater(): class SpanshUpdater():
def __init__(self, version, plugin_dir): def __init__(self, version, plugin_dir):
self.version = version self.version = version
@ -21,16 +29,16 @@ class SpanshUpdater():
r = requests.get(url) r = requests.get(url)
if r.status_code == 200: if r.status_code == 200:
with open(self.zip_path, 'wb') as f: with open(self.zip_path, 'wb') as f:
print("Downloading SpanshRouter to " + self.zip_path) logger.info(f"Downloading SpanshRouter to {self.zip_path}")
f.write(os.path.join(r.content)) f.write(os.path.join(r.content))
self.zip_downloaded = True self.zip_downloaded = True
else: else:
sys.stderr.write("Failed to fetch SpanchRouter update. Status code: " + str(r.status_code)) logger.warning("Failed to fetch SpanchRouter update. Status code: " + str(r.status_code))
self.zip_downloaded = False self.zip_downloaded = False
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))
self.zip_downloaded = False self.zip_downloaded = False
finally: finally:
return self.zip_downloaded return self.zip_downloaded
@ -45,9 +53,9 @@ class SpanshUpdater():
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))
else: else:
sys.stderr.write("Error when downloading the latest SpanshRouter update") logger.warning("Error when downloading the latest SpanshRouter update")
def get_changelog(self): def get_changelog(self):
url = "https://api.github.com/repos/CMDR-Kiel42/EDMC_SpanshRouter/releases/latest" url = "https://api.github.com/repos/CMDR-Kiel42/EDMC_SpanshRouter/releases/latest"
@ -63,4 +71,4 @@ class SpanshUpdater():
except: except:
exc_type, exc_value, exc_traceback = sys.exc_info() exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback) lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
sys.stderr.write(''.join('!! ' + line for line in lines)) logger.warning(''.join('!! ' + line for line in lines))