139 """Scan one log file and print report"""
140 tPattern = re.compile(
'|'.
join(backtrace))
141 fpeStartPattern = re.compile(
'|'.
join(fpeTracebackStart))
142 fpeContPattern = re.compile(
'|'.
join(fpeTracebackCont))
146 if args.warnings
is True:
147 categories += [
'warning']
148 if args.errors
is True:
149 categories += [
'error/fatal',
'prohibited',
'python error',
'fpe',
'backtrace']
152 if not ignorePattern:
153 ignorePattern.append(
'(?!)')
155 igLevels = re.compile(
'|'.
join(ignorePattern))
158 cat: re.compile(
'|'.
join(regexMap[cat]))
for cat
in categories
160 resultsA = {cat:[]
for cat
in categories}
161 with open(logfile, encoding=
'utf-8')
as f:
169 if tPattern.search(line)
and not igLevels.search(line):
171 elif fpeStartPattern.search(line)
and not igLevels.search(line):
179 resultsA[
'backtrace'].
append(line)
182 if fpeStartPattern.search(line)
or fpeContPattern.search(line):
183 resultsA[
'fpe'].
append(line)
187 for cat
in categories:
188 if patterns[cat].
search(line):
189 resultsA[cat].
append(line)
192 results = {cat:[]
for cat
in categories}
193 if args.config
is None:
196 if args.showexcludestats:
197 separateIgnoreRegex = [re.compile(line)
for line
in ignorePattern]
198 ignoreDict = {line:0
for line
in ignorePattern}
201 for cat, messages
in resultsA.items():
203 if not igLevels.search(res):
205 elif args.showexcludestats:
206 for i
in range(len(separateIgnoreRegex)):
207 if separateIgnoreRegex[i].
search(res):
208 ignoreDict[ignorePattern[i]] += 1
212 found_bad_message =
False
213 for cat
in categories:
215 if args.printpatterns:
216 print(f
'check_log.py - Checking for {cat} messages with pattern: {str(patterns[cat])} in '+logfile+
'\n')
217 if len(results[cat]) > 0:
218 print(f
'Found {len(results[cat])} {cat} message(s) in {logfile}:')
219 for msg
in results[cat]:
print(msg.strip(
'\n'))
220 found_bad_message =
True
225 if ignoreDict[s] > 0:
226 print(
str(ignoreDict[s]) +
"x " + s)
229 if found_bad_message:
230 print(f
'FAILURE : problematic message found in {logfile}')
233 print(f
'No error/warning messages found in {logfile}')