def _main(log_path, show_browser=False):
print(log_path)
df, metadata = process_log(log_path)
del df['Timestamp']
df['Msg Type'] = df['Msg Type'].apply(escape_html_chars)
df['Message'] = df['Message'].apply(escape_html_chars)
# df['Message'] = df['Message'].apply(try_json)
df['Message'] = df.apply(lambda row: format_error(row['Msg Type'], row['Message']), 1)
df['Rev ID'] = df['Rev ID'].apply(lambda x: '<a href="https://www.wikidata.org/w/index.php?oldid={}&diff=prev">{}</a>'.format(x,x) if x else x)
level_counts, info_counts, warning_counts, error_counts = generate_summary(df)
warnings_df = df.query("Level == 'WARNING'")
warnings_df.is_copy = False
del warnings_df['Level']
if not warnings_df.empty:
warnings_df = gen_ext_id_links(warnings_df)
warnings_df = url_qid(warnings_df, "QID")
errors_df = df.query("Level == 'ERROR'")
errors_df.is_copy = False
del errors_df['Level']
if not errors_df.empty:
errors_df = gen_ext_id_links(errors_df)
errors_df = url_qid(errors_df, "QID")
# errors_df['Message'] = errors_df['Message'].apply(try_format_error)
info_df = df.query("Level == 'INFO'")
info_df.is_copy = False
del info_df['Level']
if not info_df.empty:
info_df = gen_ext_id_links(info_df)
info_df = url_qid(info_df, "QID")
info_df.Message = info_df.Message.str.replace("SKIP", "No Action")
with pd.option_context('display.max_colwidth', -1):
# this class nonsense is an ugly hack: https://stackoverflow.com/questions/15079118/js-datatables-from-pandas/41536906
level_counts = level_counts.to_frame().to_html(escape=False)
info_counts = info_counts.to_frame().to_html(escape=False)
warning_counts = warning_counts.to_frame().to_html(escape=False)
error_counts = error_counts.to_frame().to_html(escape=False)
info_df = info_df.to_html(escape=False, classes='df" id = "info_df')
warnings_df = warnings_df.to_html(escape=False, classes='df" id = "warning_df')
errors_df = errors_df.to_html(escape=False, classes='df" id = "error_df')
template = Template(open(os.path.join(sys.path[0], "template.html")).read())
s = template.render(name=metadata['name'], run_id=metadata['run_id'],
level_counts=level_counts,
info_counts=info_counts,
warning_counts=warning_counts,
error_counts=error_counts,
warnings_df=warnings_df, errors_df=errors_df, info_df=info_df)
out_path = log_path.rsplit(".", 1)[0] + ".html"
with open(out_path, 'w') as f:
f.write(s)
if show_browser:
webbrowser.open(out_path)
评论列表
文章目录