run dir: write detailed log file
For each run on a trial, create a log target that logs to a file in the run
dir. Set all levels to DBG in that log target.
Related: OS#2206
Change-Id: Ie7279aeaf32950f85d4145abdc917024003d1d99
diff --git a/src/osmo_gsm_tester/log.py b/src/osmo_gsm_tester/log.py
index 10108bc..0da9bd5 100644
--- a/src/osmo_gsm_tester/log.py
+++ b/src/osmo_gsm_tester/log.py
@@ -83,6 +83,9 @@
self.style()
LogTarget.all_targets.append(self)
+ def remove(self):
+ LogTarget.all_targets.remove(self)
+
def style(self, time=True, time_fmt=DATEFMT, category=True, level=True, origin=True, origin_width=32, src=True, trace=False):
'''
set all logging format aspects, to defaults if not passed:
diff --git a/src/osmo_gsm_tester/trial.py b/src/osmo_gsm_tester/trial.py
index c490105..ae7c587 100644
--- a/src/osmo_gsm_tester/trial.py
+++ b/src/osmo_gsm_tester/trial.py
@@ -28,12 +28,14 @@
FILE_CHECKSUMS = 'checksums.md5'
TIMESTAMP_FMT = '%Y-%m-%d_%H-%M-%S'
FILE_LAST_RUN = 'last_run'
+FILE_LOG = 'log'
class Trial(log.Origin):
path = None
dir = None
_run_dir = None
bin_tars = None
+ log_targets = None
@staticmethod
def next(trials_dir):
@@ -60,6 +62,13 @@
return self.name()
def __enter__(self):
+ # add a log target to log to the run dir
+ run_dir = self.get_run_dir()
+ self.log_targets = [
+ log.FileLogTarget(run_dir.new_child(FILE_LOG))
+ .set_all_levels(log.L_DBG)
+ .style_change(trace=True),
+ ]
self.log('Trial start')
self.take()
super().__enter__()
@@ -68,6 +77,10 @@
super().__exit__(*exc_info)
self.log('Trial end')
+ for lt in self.log_targets:
+ lt.remove()
+ self.log_targets = None
+
def take(self):
self.dir.touch(FILE_MARK_TAKEN)
return self