diff --git a/evennia/utils/logger.py b/evennia/utils/logger.py index dc097bd299..b010045dbf 100644 --- a/evennia/utils/logger.py +++ b/evennia/utils/logger.py @@ -408,7 +408,16 @@ class EvenniaLogFile(logfile.LogFile): lines (list): lines from our _file attribute. """ - return [line.decode("utf-8") for line in self._file.readlines(*args, **kwargs)] + lines = [] + for line in self._file.readlines(*args, **kwargs): + try: + lines.append(line.decode("utf-8")) + except UnicodeDecodeError: + try: + lines.append(str(line)) + except Exception: + lines.append("") + return lines _LOG_FILE_HANDLES = {} # holds open log handles diff --git a/evennia/web/website/views/channels.py b/evennia/web/website/views/channels.py index 339ed8d9be..a6f7dfeba8 100644 --- a/evennia/web/website/views/channels.py +++ b/evennia/web/website/views/channels.py @@ -133,8 +133,12 @@ class ChannelDetailView(ChannelMixin, ObjectDetailView): for log in (x.strip() for x in tail_log_file(filename, 0, self.max_num_lines)): if not log: continue - time, msg = log.split(" [-] ") - time_key = time.split(":")[0] + try: + time, msg = log.split(" [-] ") + time_key = time.split(":")[0] + except ValueError: + # malformed log line. Skip. + continue bucket.append({"key": time_key, "timestamp": time, "message": msg})