diff --git a/service/character.py b/service/character.py index 4eea8e54b..1e5185b69 100644 --- a/service/character.py +++ b/service/character.py @@ -194,11 +194,13 @@ class Character(object): @staticmethod def backupSkills(path, saveFmt, activeFit, callback): thread = SkillBackupThread(path, saveFmt, activeFit, callback) + pyfalog.debug("Starting backup skills thread.") thread.start() @staticmethod def importCharacter(path, callback): thread = CharacterImportThread(path, callback) + pyfalog.debug("Starting import character thread.") thread.start() @staticmethod diff --git a/service/fit.py b/service/fit.py index 9eeb348fe..70a471042 100644 --- a/service/fit.py +++ b/service/fit.py @@ -246,6 +246,7 @@ class Fit(object): try: implant = es_Implant(item) except ValueError: + pyfalog.warning("Invalid item: {0}", itemID) return False fit.implants.append(implant) @@ -272,6 +273,7 @@ class Fit(object): try: booster = es_Booster(item) except ValueError: + pyfalog.warning("Invalid item: {0}", itemID) return False fit.boosters.append(booster) @@ -432,6 +434,7 @@ class Fit(object): try: m = es_Module(item) except ValueError: + pyfalog.warning("Invalid item: {0}", itemID) return False if m.item.category.name == "Subsystem": @@ -479,6 +482,7 @@ class Fit(object): try: m = es_Module(item) except ValueError: + pyfalog.warning("Invalid item: {0}", newItemID) return False if m.fits(fit): @@ -519,6 +523,7 @@ class Fit(object): if cargoP.isValidState(State.ACTIVE): cargoP.state = State.ACTIVE except: + pyfalog.warning("Invalid item: {0}", cargo.item) return if cargoP.slot != module.slot: # can't swap modules to different racks diff --git a/service/network.py b/service/network.py index d050e88e2..a990fee23 100644 --- a/service/network.py +++ b/service/network.py @@ -21,10 +21,13 @@ import urllib2 import urllib import socket +from logbook import Logger import config from service.settings import NetworkSettings +pyfalog = Logger(__name__) + # network timeout, otherwise pyfa hangs for a long while if no internet connection timeout = 3 socket.setdefaulttimeout(timeout) @@ -76,6 +79,7 @@ class Network(object): access = NetworkSettings.getInstance().getAccess() if not self.ENABLED & access or not type & access: + pyfalog.warning("Access not enabled - please enable in Preferences > Network") raise Error("Access not enabled - please enable in Preferences > Network") # Set up some things for the request @@ -113,6 +117,8 @@ class Network(object): try: return urllib2.urlopen(request) except urllib2.HTTPError as error: + pyfalog.warning("HTTPError:") + pyfalog.warning(error) if error.code == 404: raise RequestError() elif error.code == 403: @@ -120,6 +126,8 @@ class Network(object): elif error.code >= 500: raise ServerError() except urllib2.URLError as error: + pyfalog.warning("Timed out or other URL error:") + pyfalog.warning(error) if "timed out" in error.reason: raise TimeoutError() else: diff --git a/service/port.py b/service/port.py index 31d1a0b94..3c0930810 100644 --- a/service/port.py +++ b/service/port.py @@ -83,11 +83,13 @@ class Port(object): @staticmethod def backupFits(path, callback): + pyfalog.debug("Starting backup fits thread.") thread = FitBackupThread(path, callback) thread.start() @staticmethod def importFitsThreaded(paths, callback): + pyfalog.debug("Starting import fits thread.") thread = FitImportThread(paths, callback) thread.start() @@ -105,12 +107,14 @@ class Port(object): fits = [] for path in paths: if callback: # Pulse + pyfalog.debug("Processing file:\n{0}", path) wx.CallAfter(callback, 1, "Processing file:\n%s" % path) file_ = open(path, "r") srcString = file_.read() if len(srcString) == 0: # ignore blank files + pyfalog.debug("File is blank.") continue codec_found = None @@ -165,6 +169,7 @@ class Port(object): _, fitsImport = Port.importAuto(srcString, path, callback=callback, encoding=codec_found) fits += fitsImport except xml.parsers.expat.ExpatError: + pyfalog.warning("Malformed XML in:\n{0}", path) return False, "Malformed XML in %s" % path except Exception as e: pyfalog.critical("Unknown exception processing: {0}", path) @@ -181,6 +186,7 @@ class Port(object): db.save(fit) IDs.append(fit.ID) if callback: # Pulse + pyfalog.debug("Processing complete, saving fits to database: {0}/{1}", i + 1, numFits) wx.CallAfter( callback, 1, "Processing complete, saving fits to database\n(%d/%d)" % @@ -612,7 +618,7 @@ class Port(object): if m.fits(fit): m.owner = fit if not m.isValidState(m.state): - print("Error: Module", m, "cannot have state", m.state) + pyfalog.warning("Error: Module {0} cannot have state {1}", m, m.state) fit.modules.append(m) @@ -810,8 +816,9 @@ class Port(object): if callback: wx.CallAfter(callback, None) # Skip fit silently if we get an exception - except Exception: + except Exception as e: pyfalog.error("Caught exception on fit.") + pyfalog.error(e) pass return fits @@ -835,8 +842,9 @@ class Port(object): f.ship = Ship(sMkt.getItem(shipType)) except ValueError: f.ship = Citadel(sMkt.getItem(shipType)) - except: + except Exception as e: pyfalog.warning("Caught exception on importXml") + pyfalog.error(e) continue hardwares = fitting.getElementsByTagName("hardware") moduleList = [] @@ -845,8 +853,9 @@ class Port(object): moduleName = hardware.getAttribute("type") try: item = sMkt.getItem(moduleName, eager="group.category") - except: + except Exception as e: pyfalog.warning("Caught exception on importXml") + pyfalog.error(e) continue if item: if item.category.name == "Drone": diff --git a/service/prefetch.py b/service/prefetch.py index e73da9ff5..2680b0184 100644 --- a/service/prefetch.py +++ b/service/prefetch.py @@ -59,6 +59,7 @@ if config.saveDB and os.path.isfile(config.saveDB): else: # If database does not exist, do not worry about migration. Simply # create and set version + pyfalog.debug("Existing database not found, creating new database.") db.saveddata_meta.create_all() db.saveddata_engine.execute('PRAGMA user_version = {}'.format(migration.getAppVersion())) # Import default database values diff --git a/service/price.py b/service/price.py index facb5e389..b2466c4c4 100644 --- a/service/price.py +++ b/service/price.py @@ -104,6 +104,7 @@ class Price(object): try: percprice = float(sell.getElementsByTagName("percentile").item(0).firstChild.data) except (TypeError, ValueError): + pyfalog.warning("Failed to get price for: {0}", type_) percprice = 0 # Fill price data diff --git a/service/server.py b/service/server.py index ff71d2f92..4d6566de9 100644 --- a/service/server.py +++ b/service/server.py @@ -82,11 +82,15 @@ class AuthHandler(BaseHTTPServer.BaseHTTPRequestHandler): try: if step2: self.server.callback(parts) + pyfalog.info("Successfully logged into CREST.") msg = "If you see this message then it means you should be logged into CREST. You may close this window and return to the application." else: # For implicit mode, we have to serve up the page which will take the hash and redirect useing a querystring + pyfalog.info("Processing response from EVE Online.") msg = "Processing response from EVE Online" except Exception, ex: + pyfalog.error("Error in CREST AuthHandler") + pyfalog.error(ex) msg = "
{}
".format(ex.message) finally: self.send_response(200) @@ -127,6 +131,7 @@ class StoppableHTTPServer(BaseHTTPServer.HTTPServer): pass def stop(self): + pyfalog.warning("Setting CREST server to stop.") self.run = False def handle_timeout(self): diff --git a/service/update.py b/service/update.py index 2cffd9cec..7196b2a59 100644 --- a/service/update.py +++ b/service/update.py @@ -85,8 +85,9 @@ class CheckUpdateThread(threading.Thread): if release['prerelease'] and rVersion > config.expansionVersion: wx.CallAfter(self.callback, release) # Singularity -> Singularity break - except: - pyfalog.warning("Caught exception in run") + except Exception as e: + pyfalog.error("Caught exception in run") + pyfalog.error(e) pass @staticmethod @@ -100,6 +101,7 @@ class Update(object): @staticmethod def CheckUpdate(callback): thread = CheckUpdateThread(callback) + pyfalog.debug("Starting Check Update Thread.") thread.start() @classmethod