Starting to implement logs
This commit is contained in:
parent
cc21108c59
commit
14917b7d56
|
@ -1,5 +1,6 @@
|
|||
import tempfile
|
||||
import weakref
|
||||
from collections.abc import Generator
|
||||
from pathlib import Path
|
||||
from typing import Any, ClassVar
|
||||
|
||||
|
@ -110,9 +111,10 @@ class VM(GObject.Object):
|
|||
|
||||
threading.Thread(target=self.__start).start()
|
||||
|
||||
self.connect("vm_status_changed", self._start_logs_task)
|
||||
|
||||
# Every 50ms check if the VM is still running
|
||||
self._watcher_id = GLib.timeout_add(50, self._vm_watcher_task)
|
||||
|
||||
if self._watcher_id == 0:
|
||||
log.error("Failed to add watcher")
|
||||
raise ClanError("Failed to add watcher")
|
||||
|
@ -130,6 +132,21 @@ class VM(GObject.Object):
|
|||
|
||||
return GLib.SOURCE_CONTINUE
|
||||
|
||||
def _start_logs_task(self, obj: Any, vm: Any, _vm: Any) -> None:
|
||||
print("Starting log task")
|
||||
self._logs_id = GLib.timeout_add(50, self._get_logs_task)
|
||||
|
||||
def _get_logs_task(self) -> bool:
|
||||
if not self.process.out_file.exists():
|
||||
log.error(f"Log file {self.process.out_file} does not exist")
|
||||
return GLib.SOURCE_REMOVE
|
||||
if not self.is_running():
|
||||
log.info("VM is not running")
|
||||
return GLib.SOURCE_REMOVE
|
||||
|
||||
print(self.read_whole_log())
|
||||
return GLib.SOURCE_CONTINUE
|
||||
|
||||
def is_running(self) -> bool:
|
||||
return self.process.proc.is_alive()
|
||||
|
||||
|
@ -144,7 +161,16 @@ class VM(GObject.Object):
|
|||
|
||||
self.process.kill_group()
|
||||
|
||||
def read_log(self) -> str:
|
||||
def read_line_log(self) -> Generator[str, None, None]:
|
||||
with open(self.process.out_file) as f:
|
||||
while True:
|
||||
line = f.readline()
|
||||
if not line:
|
||||
break
|
||||
yield line
|
||||
return None
|
||||
|
||||
def read_whole_log(self) -> str:
|
||||
if not self.process.out_file.exists():
|
||||
log.error(f"Log file {self.process.out_file} does not exist")
|
||||
return ""
|
||||
|
|
|
@ -211,5 +211,6 @@ class ClanList(Gtk.Box):
|
|||
print("VM exited with code:", exitc)
|
||||
if not vm.is_running() and exitc != 0:
|
||||
print("VM exited with error. Exitcode:", exitc)
|
||||
print(vm.read_log())
|
||||
print("==========VM LOGS=========")
|
||||
print(vm.read_whole_log())
|
||||
# self.show_error_dialog(vm.read_log())
|
||||
|
|
Loading…
Reference in New Issue
Block a user