53 def _initalisePatterns(self, files):
54 for patternFile in files:
55 if patternFile == "None":
56 continue
57 fullName = trfUtils.findFile(os.environ['DATAPATH'], patternFile)
58 if not fullName:
59 msg.warning('Error pattern file {0} could not be found in DATAPATH'.format(patternFile))
60 continue
61 try:
62 with open(fullName) as patternFileHandle:
63 msg.debug('Opened error file {0} from here: {1}'.format(patternFile, fullName))
64
65 for line in patternFileHandle:
66 line = line.strip()
67 if line.startswith('#') or line == '':
68 continue
69 try:
70
71 (who, level, message) = [ s.strip() for s in line.split(',', 2) ]
72 if who == "":
73
74 who = "."
75 reWho = re.compile(who)
76 reMessage = re.compile(message)
77 except ValueError:
78 msg.warning('Could not parse this line as a valid error pattern: {0}'.format(line))
79 continue
80 except re.error as e:
81 msg.warning('Could not parse valid regexp from {0}: {1}'.format(message, e))
82 continue
83
84 msg.debug('Successfully parsed: who={0}, level={1}, message={2}'.format(who, level, message))
85
86 self._structuredPatterns.append({'service': reWho, 'level': level, 'message': reMessage})
87
88 except OSError as xxx_todo_changeme:
89 (errno, errMsg) = xxx_todo_changeme.args
90 msg.warning('Failed to open error pattern file {0}: {1} ({2})'.format(fullName, errMsg, errno))
91
92