Good idea!
On Oct 25, 6:37 am, selecta <gr...@delarue-berlin.de> wrote: > Quite a while ago I wrote some code for my issue tracker to show error > tickets by their number of occurrence. > The Idea behind this is that you will see the error that appears most > frequently and that needs fixing immediately. Since I am too busy to > finish the issue tracker I will just share the relevant code > > screenshothttp://jaguar.biologie.hu-berlin.de/~fkrause/screenshot_error_frequec... > > the controller > > error_files_base = > os.path.join(request.env.web2py_path,'applications',request.application,'errors') > def errors(): > import operator > import os.path > import hashlib > import os > import pickle > #------------------------------------------ > if request.vars.has_key('del'): > for fn in os.listdir(error_files_base): > try: > error = > pickle.load(open(os.path.join(error_files_base,fn),'r')) > except IOError: > continue > hash = hashlib.md5(error['traceback']).hexdigest() > if request.vars['del'] == hash: > os.remove( os.path.join(error_files_base,fn) ) > #------------------------------------------ > > hash2error = dict() > for fn in os.listdir(error_files_base): > try: > error = > pickle.load(open(os.path.join(error_files_base,fn),'r')) > except IOError: > continue > hash = hashlib.md5(error['traceback']).hexdigest() > try: > hash2error[hash]['count'] += 1 > except KeyError: > error_lines = error['traceback'].split("\n") > last_line = error_lines[-2] > error_causer = os.path.split(error['layer'])[1] > hash2error[hash] = dict(count = 1, pickel = error, causer > = error_causer, last_line = last_line, hash = hash) > > decorated = [(x['count'],x) for x in hash2error.values()] > decorated.sort(key=operator.itemgetter(0), reverse=True) > return dict(errors = [x[1] for x in decorated]) > > the view > > <table id='trck_errors'> > {{=THEAD(TR(TH('Delete'), TH('Count'), TH('File'), TH('Error')))}} > <tbody> > {{for e in errors:}} > {{=TR(TD(BUTTON_DELETE(e['hash'])), > TH(e['count']),TD(e['causer']),TD(e['last_line']), > _onclick="collapse('%s');"%e['hash'])}}{{=TR(TD(DIV(CODE(e['pickel'] > ['traceback']), _id=e['hash']),_colspan=4 ))}} > {{pass}} > </tbody> > </table> > <script> $(document).ready(function(){ > $('{{for e in errors:}}#{{=e['hash']}}, {{pass}}').hide(); > }); </script> > > feel free to use and improve