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/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