summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <birte.friesel@uos.de>2023-12-08 11:40:17 +0100
committerBirte Kristina Friesel <birte.friesel@uos.de>2023-12-08 11:40:17 +0100
commitf9671066f7428b0841c62b54486799ad50bf1c68 (patch)
treed22333fc005fb891f44b070ef55a60fe901a6a43
parentc01597f95b593d3cdb75e0163a39e00765791aa0 (diff)
analyze-log: add support for xz-compressed logfiles
-rwxr-xr-xbin/analyze-log.py61
1 files changed, 36 insertions, 25 deletions
diff --git a/bin/analyze-log.py b/bin/analyze-log.py
index c53f8a0..55fc2db 100755
--- a/bin/analyze-log.py
+++ b/bin/analyze-log.py
@@ -37,32 +37,40 @@ def kv_to_param_i(kv_str):
def parse_logfile(filename):
- observations = list()
+ if filename.endswith("xz"):
+ import lzma
+ with lzma.open(filename, "rt") as f:
+ return parse_loghandle(f)
with open(filename, "r") as f:
- for lineno, line in enumerate(f):
- m = re.search(r"\[::\] *([^|]*?) *[|] *([^|]*?) *[|] *(.*)", line)
- if m:
- name_str = m.group(1)
- param_str = m.group(2)
- attr_str = m.group(3)
- try:
- param = dict(map(kv_to_param_i, param_str.split()))
- attr = dict(map(kv_to_param_f, attr_str.split()))
- observations.append(
- {
- "name": name_str,
- "param": param,
- "attribute": attr,
- }
- )
- except ValueError:
- print(
- f"Error parsing {filename}: invalid key-value pair in line {lineno+1}",
- file=sys.stderr,
- )
- print(f"Offending entry:\n{line}", file=sys.stderr)
- raise
+ return parse_loghandle(f)
+
+
+def parse_loghandle(handle):
+ observations = list()
+ for lineno, line in enumerate(handle):
+ m = re.search(r"\[::\] *([^|]*?) *[|] *([^|]*?) *[|] *(.*)", line)
+ if m:
+ name_str = m.group(1)
+ param_str = m.group(2)
+ attr_str = m.group(3)
+ try:
+ param = dict(map(kv_to_param_i, param_str.split()))
+ attr = dict(map(kv_to_param_f, attr_str.split()))
+ observations.append(
+ {
+ "name": name_str,
+ "param": param,
+ "attribute": attr,
+ }
+ )
+ except ValueError:
+ print(
+ f"Error parsing {filename}: invalid key-value pair in line {lineno+1}",
+ file=sys.stderr,
+ )
+ print(f"Offending entry:\n{line}", file=sys.stderr)
+ raise
return observations
@@ -117,7 +125,10 @@ def main():
"--export-model", metavar="FILE", type=str, help="Export JSON model to FILE"
)
parser.add_argument(
- "logfiles", nargs="+", type=str, help="Path to benchmark output"
+ "logfiles",
+ nargs="+",
+ type=str,
+ help="Path to benchmark output (.txt or .txt.xz)",
)
args = parser.parse_args()