in src/modules/log_parser.py [0:0]
def parse_logs(self) -> None:
"""
Parses the logs based on the provided parameters.
"""
try:
start_dt = datetime.strptime(self.start_time, "%Y-%m-%d %H:%M:%S")
end_dt = datetime.strptime(self.end_time, "%Y-%m-%d %H:%M:%S")
with open(self.log_file, "r", encoding="utf-8") as file:
for line in file:
try:
if self.ansible_os_family == "REDHAT":
log_time = datetime.strptime(
" ".join(line.split()[:3]), "%b %d %H:%M:%S"
)
log_time = log_time.replace(year=start_dt.year)
elif self.ansible_os_family == "SUSE":
log_time = datetime.strptime(line.split(".")[0], "%Y-%m-%dT%H:%M:%S")
else:
continue
if start_dt <= log_time <= end_dt and any(
keyword in line for keyword in self.keywords
):
self.result["filtered_logs"].append(
line.translate(str.maketrans({"\\": "", '"': "", "'": ""}))
)
except ValueError:
continue
self.result.update(
{
"filtered_logs": json.dumps(self.result["filtered_logs"]),
"status": TestStatus.SUCCESS.value,
}
)
except FileNotFoundError as ex:
self.handle_error(ex)
except Exception as ex:
self.handle_error(ex)