From 29c3b647a988f547de0529d0679be050e2c6f8de Mon Sep 17 00:00:00 2001 From: Ivan Usov Date: Wed, 14 Oct 2020 18:04:19 +0200 Subject: [PATCH] Add basic display for stdout and bokeh logger --- pyzebra/app/app.py | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/pyzebra/app/app.py b/pyzebra/app/app.py index 67f4e14..35e5bf0 100644 --- a/pyzebra/app/app.py +++ b/pyzebra/app/app.py @@ -1,11 +1,15 @@ import argparse +import logging +import sys +from io import StringIO from bokeh.io import curdoc -from bokeh.models import Tabs +from bokeh.layouts import column, row +from bokeh.models import Tabs, TextAreaInput +import panel_ccl_integrate import panel_hdf_anatric import panel_hdf_viewer -import panel_ccl_integrate parser = argparse.ArgumentParser( prog="pyzebra", formatter_class=argparse.ArgumentDefaultsHelpFormatter @@ -16,9 +20,32 @@ args = parser.parse_args() doc = curdoc() doc.title = "pyzebra" +sys.stdout = StringIO() +stdout_textareainput = TextAreaInput(title="print output:", height=150) + +bokeh_stream = StringIO() +bokeh_handler = logging.StreamHandler(bokeh_stream) +bokeh_handler.setFormatter(logging.Formatter(logging.BASIC_FORMAT)) +bokeh_logger = logging.getLogger('bokeh') +bokeh_logger.addHandler(bokeh_handler) +bokeh_log_textareainput = TextAreaInput(title="server output:", height=150) + # Final layout tab_hdf_viewer = panel_hdf_viewer.create() tab_hdf_anatric = panel_hdf_anatric.create() tab_ccl_integrate = panel_ccl_integrate.create() -doc.add_root(Tabs(tabs=[tab_hdf_viewer, tab_hdf_anatric, tab_ccl_integrate])) +doc.add_root( + column( + Tabs(tabs=[tab_hdf_viewer, tab_hdf_anatric, tab_ccl_integrate]), + row(stdout_textareainput, bokeh_log_textareainput, sizing_mode="scale_both"), + ) +) + + +def update_stdout(): + stdout_textareainput.value = sys.stdout.getvalue() + bokeh_log_textareainput.value = bokeh_stream.getvalue() + + +doc.add_periodic_callback(update_stdout, 1000)