From e5e0533b6e355482f68592de1bff7e4af8f482ca Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Thu, 7 Feb 2019 02:31:15 +0100 Subject: [PATCH] logger: Log the JID during a parsing error. --- poezio/logger.py | 10 +++++----- test/test_logger.py | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/poezio/logger.py b/poezio/logger.py index c8ec66d9..d43cc759 100644 --- a/poezio/logger.py +++ b/poezio/logger.py @@ -56,14 +56,14 @@ class LogMessage(LogItem): self.nick = nick -def parse_log_line(msg: str) -> Optional[LogItem]: +def parse_log_line(msg: str, jid: str) -> Optional[LogItem]: match = re.match(MESSAGE_LOG_RE, msg) if match: return LogMessage(*match.groups()) match = re.match(INFO_LOG_RE, msg) if match: return LogInfo(*match.groups()) - log.debug('Error while parsing "%s"', msg) + log.debug('Error while parsing %s’s logs: “%s”', jid, msg) return None @@ -176,7 +176,7 @@ class Logger: filename, exc_info=True) return None - return parse_log_lines(lines) + return parse_log_lines(lines, jid) def log_message(self, jid: str, @@ -306,7 +306,7 @@ def _get_lines_from_fd(fd: IO[Any], nb: int = 10) -> List[str]: return lines -def parse_log_lines(lines: List[str]) -> List[Dict[str, Any]]: +def parse_log_lines(lines: List[str], jid: str) -> List[Dict[str, Any]]: """ Parse raw log lines into poezio log objects """ @@ -320,7 +320,7 @@ def parse_log_lines(lines: List[str]) -> List[Dict[str, Any]]: idx += 1 log.debug('fail?') continue - log_item = parse_log_line(lines[idx]) + log_item = parse_log_line(lines[idx], jid) idx += 1 if not isinstance(log_item, LogItem): log.debug('wrong log format? %s', log_item) diff --git a/test/test_logger.py b/test/test_logger.py index f1851d60..09ba720e 100644 --- a/test/test_logger.py +++ b/test/test_logger.py @@ -7,13 +7,13 @@ from poezio.common import get_utc_time, get_local_time def test_parse_message(): line = 'MR 20170909T09:09:09Z 000  body' - assert vars(parse_log_line(line)) == vars(LogMessage('2017', '09', '09', '09', '09', '09', '0', 'nick', 'body')) + assert vars(parse_log_line(line, 'user@domain')) == vars(LogMessage('2017', '09', '09', '09', '09', '09', '0', 'nick', 'body')) line = '<>' - assert parse_log_line(line) is None + assert parse_log_line(line, 'user@domain') is None line = 'MR 20170908T07:05:04Z 003  ' - assert vars(parse_log_line(line)) == vars(LogMessage('2017', '09', '08', '07', '05', '04', '003', 'nick', '')) + assert vars(parse_log_line(line, 'user@domain')) == vars(LogMessage('2017', '09', '08', '07', '05', '04', '003', 'nick', '')) def test_log_and_parse_messages(): @@ -27,7 +27,7 @@ def test_log_and_parse_messages(): msg2_utc = get_utc_time(msg2['date']) assert built_msg2 == 'MR %s 001  coucou\n coucou\n' % (msg2_utc.strftime('%Y%m%dT%H:%M:%SZ')) - assert parse_log_lines((built_msg1 + built_msg2).split('\n')) == [ + assert parse_log_lines((built_msg1 + built_msg2).split('\n'), 'user@domain') == [ {'time': msg1['date'], 'history': True, 'txt': '\x195,-1}coucou', 'nickname': 'toto'}, {'time': msg2['date'], 'history': True, 'txt': '\x195,-1}coucou\ncoucou', 'nickname': 'toto'}, ]