from parser import get_message_type, parse_line, Line, MessageType import logging from logger import logger def read_logs(path: str) -> Line: for line in open(path, 'r'): #1.2.1 logger.debug(f"read {len(line.encode('utf-8'))} bytes") try: parsed_line = parse_line(line.strip()) except ValueError as e: logger.error(str(e)) continue msg_type = get_message_type(parsed_line.message) if msg_type == MessageType.SUCCESSFUL_LOGIN: logger.info("read successful login message") #1.2.2 elif msg_type == MessageType.CLOSED_CONNECTION: logger.info("read closed connection message") #1.2.3 elif msg_type == MessageType.FAILED_LOGIN: logger.warning("read failed login message") #1.2.4 elif msg_type == MessageType.INVALID_PASSWORD: logger.error("read invalid password message") elif msg_type == MessageType.INVALID_USERNAME: logger.error("read invalid username message") #1.2.5 elif msg_type == MessageType.BREAK_IN_ATTEMPT: logger.critical("read break-in attempt message") yield parsed_line