offline usage for filter_log_message.py (#20131)

* offline usage for filter_log_message.py

* cleanup
old-commit-hash: cb9f860e0c
commatwo_master
Willem Melching 5 years ago committed by GitHub
parent b13f6b4288
commit 3b6548d92a
  1. 64
      selfdrive/debug/filter_log_message.py

@ -3,7 +3,8 @@ import argparse
import json
import cereal.messaging as messaging
from tools.lib.logreader import LogReader
from tools.lib.route import Route
LEVELS = {
"DEBUG": 10,
@ -23,32 +24,55 @@ ANDROID_LOG_SOURCE = {
}
def print_logmessage(t, msg, min_level):
try:
log = json.loads(msg)
if log['levelnum'] >= min_level:
print(f"[{t / 1e9:.6f}] {log['filename']}:{log.get('lineno', '')} - {log.get('funcname', '')}: {log['msg']}")
except json.decoder.JSONDecodeError:
print(f"[{t / 1e9:.6f}] decode error: {msg}")
def print_androidlog(t, msg):
source = ANDROID_LOG_SOURCE[msg.id]
print(f"[{t / 1e9:.6f}] {source} {msg.pid} {msg.tag} - {msg.message}")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--level', default='DEBUG')
parser.add_argument('--addr', default='127.0.0.1')
parser.add_argument("socket", type=str, nargs='*', help="socket name")
parser.add_argument("route", type=str, nargs='*', help="route name + segment number for offline usage")
args = parser.parse_args()
sm = messaging.SubMaster(['logMessage', 'androidLog'], addr=args.addr)
logs = None
if len(args.route):
r = Route(args.route[0])
logs = r.log_paths() # TODO: switch to qlogs when logs are in there
if len(args.route) == 2 and logs:
n = int(args.route[1])
logs = [logs[n]]
min_level = LEVELS[args.level]
while True:
sm.update()
if sm.updated['logMessage']:
t = sm.logMonoTime['logMessage']
try:
log = json.loads(sm['logMessage'])
if log['levelnum'] >= min_level:
print(f"[{t / 1e9:.6f}] {log['filename']}:{log.get('lineno', '')} - {log.get('funcname', '')}: {log['msg']}")
except json.decoder.JSONDecodeError:
print(f"[{t / 1e9:.6f}] decode error: {sm['logMessage']}")
if sm.updated['androidLog']:
t = sm.logMonoTime['androidLog']
m = sm['androidLog']
source = ANDROID_LOG_SOURCE[m.id]
print(f"[{t / 1e9:.6f}] {source} {m.pid} {m.tag} - {m.message}")
if logs:
for log in logs:
if log:
lr = LogReader(log)
for m in lr:
if m.which() == 'logMessage':
print_logmessage(m.logMonoTime, m.logMessage, min_level)
elif m.which() == 'androidLog':
print_androidlog(m.logMonoTime, m.androidLog)
else:
sm = messaging.SubMaster(['logMessage', 'androidLog'], addr=args.addr)
while True:
sm.update()
if sm.updated['logMessage']:
print_logmessage(sm.logMonoTime['logMessage'], sm['logMessage'], min_level)
if sm.updated['androidLog']:
print_androidlog(sm.logMonoTime['androidLog'], sm['androidLog'])

Loading…
Cancel
Save