diff --git a/esds/debug.py b/esds/debug.py index 168033a..fe19745 100644 --- a/esds/debug.py +++ b/esds/debug.py @@ -11,6 +11,7 @@ class Debug: self.simulator=simulator self.file_path=file_path self.loop_count=0 + self.logs=list() header={ "python_version" : sys.version, "simulation_started_at": simulator.startat, @@ -20,6 +21,9 @@ class Debug: } self.write(header,append=False) + def append_log(self,log): + self.logs.append(log) + def write(self,data, append=True): mode="a" if append else "w" with open(self.file_path, mode) as f: @@ -95,6 +99,8 @@ class Debug: "simulated_time_accurate": self.simulator.time, "network_interfaces": self.get_network_interfaces(), "events_list": self.get_events_list(), - "nodes_infos": self.get_nodes_infos() + "nodes_infos": self.get_nodes_infos(), + "logs": self.logs } self.write(loop_data) + self.logs.clear() diff --git a/esds/simulator.py b/esds/simulator.py index 2ea77b9..fb52fec 100644 --- a/esds/simulator.py +++ b/esds/simulator.py @@ -50,6 +50,7 @@ class Simulator: self.interferences=True self.wait_end_nodes=list() # Keep track of nodes that wait for the end of the simulation self.time_truncated=format(self.time,self.precision) # Truncated version is used in log print + self.debug=None # No debug by default def update_network(self,netmat): for event in self.events: @@ -85,7 +86,10 @@ class Simulator: def log(self,msg,node=None): src = "esds" if node is None else "n"+str(node) - print("[t="+str(self.time_truncated)+",src="+src+"] "+msg) + logline="[t="+str(self.time_truncated)+",src="+src+"] "+msg + if self.debug is not None: + self.debug.append_log(logline) + print(logline) def sort_events(self): """