···
from queue import Queue, Empty
from typing import Tuple, Any, Callable, Dict, Iterator, Optional, List, Iterable
from xml.sax.saxutils import XMLGenerator
6
+
from colorama import Style
···
self.xml.startElement("logfile", attrs={})
155
+
self._print_serial_logs = True
self.xml.endElement("logfile")
···
self.log_line(message, attributes)
177
-
def enqueue(self, message: Dict[str, str]) -> None:
178
-
self.queue.put(message)
180
+
def log_serial(self, message: str, machine: str) -> None:
181
+
self.enqueue({"msg": message, "machine": machine, "type": "serial"})
182
+
if self._print_serial_logs:
183
+
eprint(Style.DIM + "{} # {}".format(machine, message) + Style.RESET_ALL)
185
+
def enqueue(self, item: Dict[str, str]) -> None:
186
+
self.queue.put(item)
def drain_log_queue(self) -> None:
item = self.queue.get_nowait()
184
-
attributes = {"machine": item["machine"], "type": "serial"}
185
-
self.log_line(self.sanitise(item["msg"]), attributes)
192
+
msg = self.sanitise(item["msg"])
194
+
self.log_line(msg, item)
···
def log(self, msg: str) -> None:
self.logger.log(msg, {"machine": self.name})
339
+
def log_serial(self, msg: str) -> None:
340
+
self.logger.log_serial(msg, self.name)
def nested(self, msg: str, attrs: Dict[str, str] = {}) -> _GeneratorContextManager:
my_attrs = {"machine": self.name}
···
# Ignore undecodable bytes that may occur in boot menus
line = _line.decode(errors="ignore").replace("\r", "").rstrip()
self.last_lines.put(line)
787
-
eprint("{} # {}".format(self.name, line))
788
-
self.logger.enqueue({"msg": line, "machine": self.name})
799
+
self.log_serial(line)
_thread.start_new_thread(process_serial_output, ())
···
941
+
def serial_stdout_on() -> None:
943
+
log._print_serial_logs = True
946
+
def serial_stdout_off() -> None:
948
+
log._print_serial_logs = False