'codes': {
'options': [None, 'nginx status codes', 'requests/s', 'requests', 'nginx_log.codes', 'stacked'],
'lines': [
- ["20X", None, "incremental"],
- ["30X", None, "incremental"],
- ["40X", None, "incremental"],
- ["50X", None, "incremental"]
+ ["2xx", None, "incremental"],
+ ["5xx", None, "incremental"],
+ ["3xx", None, "incremental"],
+ ["4xx", None, "incremental"],
+ ["1xx", None, "incremental"],
+ ["other", None, "incremental"]
]}
}
#pattern = r'(?:" )([0-9][0-9][0-9]) ?'
self.regex = re.compile(pattern)
+ self.data = {
+ '1xx': 0,
+ '2xx': 0,
+ '3xx': 0,
+ '4xx': 0,
+ '5xx': 0,
+ 'other': 0
+ }
+
def _get_data(self):
"""
Parse new log lines
:return: dict
"""
- data = {'20X': 0,
- '30X': 0,
- '40X': 0,
- '50X': 0}
try:
raw = self._get_raw_data()
if raw is None:
return None
elif not raw:
- return data
+ return self.data
except (ValueError, AttributeError):
return None
regex = self.regex
for line in raw:
code = regex.search(line)
- beginning = code.group(1)[0]
+ try:
+ beginning = code.group(1)[0]
+ except AttributeError:
+ continue
if beginning == '2':
- data["20X"] += 1
+ self.data["2xx"] += 1
elif beginning == '3':
- data["30X"] += 1
+ self.data["3xx"] += 1
elif beginning == '4':
- data["40X"] += 1
+ self.data["4xx"] += 1
elif beginning == '5':
- data["50X"] += 1
-
- return data
+ self.data["5xx"] += 1
+ elif beginning == '1':
+ self.data["1xx"] += 1
+ else:
+ self.data["other"] += 1
+ return self.data