cc-4105: refactored some error handling code

This commit is contained in:
Rudi Grinberg 2012-08-02 14:18:22 -04:00
parent b604dd0795
commit 7c85acac98
4 changed files with 24 additions and 13 deletions

View File

@ -120,6 +120,7 @@ class AirtimeMessageReceiver(Loggable):
except Exception as e:
# TODO : add md_path to problem path or something?
self.logger.info("Unknown error when writing metadata to: '%s'" % md_path)
self.logger.info( traceback.format_exc() )
def new_watch(self, msg):
self.logger.info("Creating watch for directory: '%s'" % msg['directory'])

View File

@ -1,5 +1,6 @@
import logging
import abc
import traceback
from media.monitor.pure import LazyProperty
logger = logging.getLogger('mediamonitor2')
@ -12,6 +13,14 @@ class Loggable(object):
# TODO : Clean this up
if not hasattr(self,"_logger"): self._logger = logging.getLogger('mediamonitor2')
return self._logger
def unexpected_exception(self,e):
self.fatal_exception("'Unexpected' exception has occured:", e)
def fatal_exception(self, message, e):
self.logger.error(message)
self.logger.error( str(e) )
self.logger.error( traceback.format_exc() )
def get_logger():
return logging.getLogger('mediamonitor2')

View File

@ -103,9 +103,9 @@ class Metadata(Loggable):
song_file = mutagen.File(path, easy=True)
for airtime_k, airtime_v in md.iteritems():
if airtime_k in airtime2mutagen:
song_file[ airtime2mutagen[airtime_k] ] = airtime_v
else:
song_file[ airtime2mutagen[airtime_k] ] = u""
# The unicode cast here is mostly for integers that need to be
# strings
song_file[ airtime2mutagen[airtime_k] ] = unicode(airtime_v)
song_file.save()

View File

@ -5,7 +5,7 @@ import copy
import traceback
from media.monitor.handler import ReportHandler
from media.monitor.events import NewFile, DeleteFile
from media.monitor.events import NewFile, DeleteFile, ModifyFile
from media.monitor.log import Loggable
from media.monitor.listeners import FileMediator
from media.monitor.exceptions import BadSongFile
@ -106,16 +106,17 @@ class WatchSyncer(ReportHandler,Loggable):
def handle(self, sender, event):
"""We implement this abstract method from ReportHandler"""
# TODO : more types of events need to be handled here
if isinstance(event, NewFile):
try:
self.logger.info("'%s' : New file added: '%s'" % (self.target_path, event.path))
self.push_queue(event)
if hasattr(event, 'pack'):
# We push this event into queue
self.logger.info("Received event '%s'. Path: '%s'" % ( "", getattr(event,'path','No path exists') ))
try: self.push_queue( event )
except BadSongFile as e:
self.report_problem_file(event=event, exception=e)
elif isinstance(event, DeleteFile):
self.logger.info("'%s' : Deleted file: '%s'" % (self.target_path, event.path))
self.push_queue(event)
else: raise Exception("Unknown event: %s" % str(event))
self.logger.info("...")
except Exception as e:
self.unexpected_exception(e)
else:
self.logger.info("Received event that cannot be packed. Printing its representation:")
self.logger.info( repr(event) )
def requests_left_count(self): return len(self.__requests)
def events_left_count(self): return len(self.__queue)