blob: 2cbf2f597aebfa24068bf2af296ad43d35cd6500 [file] [log] [blame]
Arthur She5fc74272021-03-26 21:24:34 -07001#!/usr/bin/python3
2#
3# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
4#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8import os
9import sys
10import yaml
11
12"""
13The whole messages will go into 'lava.log' and if there are 'feedback' level message,
14depends on the message namespace 'ns', the corresponding message will go into separated files
15 Message Separated log file
16 level, ns
17--------------------------------------------------------
18all lava.log
19lvl='target' lava-uart0.log
20lvl='feedback' and no 'ns' feedback.log
21lvl='feedback', ns='terminal_1' lava-uart1.log
22lvl='feedback', ns='terminal_2' lava-uart2.log
23lvl='feedback', ns='terminal_3' lava-uart3.log
24--------------------------------------------------------
25"""
26
27USAGE = f"Usage: {sys.argv[0]} /path/to/lava-job-plain-log.log"
28
29separated_log_file = {"all": "lava.log", \
30 "target": "lava-uart0.log", \
31 "feedback-terminal_1": "lava-uart1.log", \
32 "feedback-terminal_2": "lava-uart2.log", \
33 "feedback-terminal_3": "lava-uart3.log", \
34 "feedback": "feedback.log"}
35opened_logfile = dict()
36
37if __name__ == "__main__":
38 args = sys.argv[1:]
39 if not args:
40 raise SystemExit(USAGE)
41
42 plain_log = args[0]
43 des_dir = os.path.dirname(plain_log)
44 if len(des_dir) == 0:
45 des_dir = "."
46
47 if not os.path.exists(plain_log):
48 raise SystemExit("The file '{}' is not exist!!".format(plain_log))
49
50 with open(plain_log, "r") as job_log:
51 log_list = yaml.load(job_log, Loader=yaml.SafeLoader)
52 try:
53 full_test_log = "{}/{}".format(des_dir, separated_log_file["all"])
54 opened_logfile["all"] = open(full_test_log, "w")
55 for line in log_list:
56 level = line["lvl"]
57 msg = line["msg"]
58 dt = line["dt"]
59 if (level == "target") or (level == "feedback"):
60 log_file_id = level
61 if "ns" in line:
62 log_file_id = "{}-{}".format(log_file_id, line["ns"])
63 if log_file_id not in opened_logfile:
64 des_log_file = "{}/{}".format(des_dir, separated_log_file[log_file_id])
65 opened_logfile[log_file_id] = open(des_log_file, "w")
66 try:
67 opened_logfile[log_file_id].write("{}\n".format(msg))
68 except UnicodeEncodeError:
69 msg = (
70 msg
71 .encode("ascii", errors="replace")
72 .decode("ascii")
73 )
74 opened_logfile[log_file_id].write("{}\n".format(msg))
75 # log to 'lava.log'
76 opened_logfile["all"].write("{} {}\n".format(dt.split(".")[0], msg))
77 except IOError as err:
78 print("File Error: " + str(err))
79
80 finally:
81 for log_file in opened_logfile:
82 opened_logfile[log_file].close()