123 def _initalisePatterns(self, files):
124 for patternFile in files:
125 if patternFile == "None":
126 continue
127 fullName = trfUtils.findFile(os.environ['DATAPATH'], patternFile)
128 if not fullName:
129 msg.warning('Error pattern file {0} could not be found in DATAPATH'.format(patternFile))
130 continue
131 try:
132 with open(fullName) as patternFileHandle:
133 msg.debug('Opened error file {0} from here: {1}'.format(patternFile, fullName))
134
135 for line in patternFileHandle:
136 line = line.strip()
137 if line.startswith('#') or line == '':
138 continue
139 try:
140
141 (who, level, message) = [ s.strip() for s in line.split(',', 2) ]
142 if who == "":
143
144 who = "."
145 reWho = re.compile(who)
146 reMessage = re.compile(message)
147 except ValueError:
148 msg.warning('Could not parse this line as a valid error pattern: {0}'.format(line))
149 continue
150 except re.error as e:
151 msg.warning('Could not parse valid regexp from {0}: {1}'.format(message, e))
152 continue
153
154 msg.debug('Successfully parsed: who={0}, level={1}, message={2}'.format(who, level, message))
155
156 self._structuredPatterns.append({'service': reWho, 'level': level, 'message': reMessage})
157
158 except OSError as xxx_todo_changeme:
159 (errno, errMsg) = xxx_todo_changeme.args
160 msg.warning('Failed to open error pattern file {0}: {1} ({2})'.format(fullName, errMsg, errno))
161
162