Implemented getting and displaying backend service log on Android

This commit is contained in:
Mark Qvist 2025-11-02 00:27:57 +01:00
parent 0a1be10411
commit 9bd7a5970c
2 changed files with 52 additions and 5 deletions

View file

@ -2135,6 +2135,8 @@ class SidebandCore():
elif "stop_tracking" in call:
args = call["stop_tracking"]
connection.send(self.stop_tracking(object_addr=args["object_addr"]))
elif "get_service_log" in call:
connection.send(self.get_service_log())
else:
connection.send(None)
@ -4156,6 +4158,34 @@ class SidebandCore():
def get_log(self):
return "\n".join(self.log_deque)
def _service_get_service_log(self):
if not RNS.vendor.platformutils.is_android():
return False
else:
if self.is_client:
try: return self.service_rpc_request({"get_service_log": True })
except Exception as e:
RNS.log("Error while sending message over RPC: "+str(e), RNS.LOG_DEBUG)
RNS.trace_exception(e)
return False
else:
return False
def get_service_log(self):
if self.allow_service_dispatch and self.is_client:
try: return self._service_get_service_log()
except Exception as e:
RNS.log("Error while getting service log: "+str(e), RNS.LOG_ERROR)
RNS.trace_exception(e)
return False
else:
try: return "\n".join(self.log_deque)
except Exception as e:
RNS.log("An error occurred while getting message transfer stamp cost: "+str(e), RNS.LOG_ERROR)
return None
def __start_jobs_immediate(self):
if self.log_quiet:
selected_level = 0

View file

@ -182,14 +182,23 @@ class Utilities():
threading.Thread(target=self.update_logviewer_job, daemon=True).start()
def update_logviewer_job(self, sender=None):
try:
output = self.app.sideband.get_log()
except Exception as e:
output = f"An error occurred while retrieving log entries:\n{e}"
try: output = self.app.sideband.get_log()
except Exception as e: output = f"An error occurred while retrieving log entries:\n{e}"
if not RNS.vendor.platformutils.is_android(): service_output = None
else:
try: service_output = self.app.sideband.get_service_log()
except Exception as e: service_output = f"An error occurred while retrieving log entries:\n{e}"
self.logviewer_screen.log_contents = output
def cb(dt):
self.logviewer_screen.ids.logviewer_output.text = f"[font=RobotoMono-Regular][size={int(dp(12))}]{output}[/size][/font]"
if not RNS.vendor.platformutils.is_android():
self.logviewer_screen.ids.logviewer_output.text = f"[font=RobotoMono-Regular][size={int(dp(12))}]{output}[/size][/font]"
else:
self.logviewer_screen.ids.logviewer_output.text = f"[size=18dp][b]Frontend Log[/b][/size][size=5dp]\n \n[font=RobotoMono-Regular][size={int(dp(12))}]{output}[/size][/font]"
self.logviewer_screen.ids.slogviewer_output.text = f"\n[size=18dp][b]Service Log[/b][/size][size=5dp]\n \n[font=RobotoMono-Regular][size={int(dp(12))}]{service_output}[/size][/font]"
self.logviewer_screen.log_contents += f"\n\n{service_output}"
Clock.schedule_once(cb, 0.2)
if self.app.root.ids.screen_manager.current == "logviewer_screen":
@ -377,6 +386,14 @@ MDScreen:
size_hint_y: None
text_size: self.width, None
height: self.texture_size[1]
MDLabel:
id: slogviewer_output
markup: True
text: ""
size_hint_y: None
text_size: self.width, None
height: self.texture_size[1]
"""
layout_advanced_screen = """