Created
February 27, 2012 10:29
Revisions
-
originell created this gist
Feb 27, 2012 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,59 @@ """ Extract unique Python-Exceptions with their Traceback from a log/text file. Usage:: python extract_exceptions.py -f logfile.txt Furthermore it supports excluding exceptions you don't want to have:: python extract_exceptions.py -f logfile.txt -e ValueError,AttributeError Would exclude any ``ValueError`` or ``AttributeError`` from the list. """ from optparse import OptionParser parser = OptionParser() parser.add_option('-f', '--file', dest='file', help='The file to extract exceptions from', default="", metavar='FILE') parser.add_option('-e', '--exclude', dest='exclude_list', help='Exclude certain exceptions from output.', default="", metavar='Exception,Exception,...') options, args = parser.parse_args() bufMode = False buf = '' errors = [] with open(options.file, 'r') as f: for line in f: if 'Traceback' in line: bufMode = True continue # Usually a Traceback includes a new line at the end, therefore # a check for line length should be safe. However this might bite # you ;-) if line and len(line) < 5: bufMode = False errors.append(buf) buf = '' if bufMode: # Truncate lines longer than 400 characters. if len(line) > 400: line = line[:400]+'...\n' buf += line unique_errs = set(errors) excludes = [] if options.exclude_list: excludes = options.exclude_list.split(',') for err in unique_errs: if any([excl in err for excl in excludes]): continue print err print