-
Notifications
You must be signed in to change notification settings - Fork 949
Logging to an output widget (as opposed to print with context manager) #1936
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
This is great! There's an issue for centralising the documentation on the output widget (issue #1935 ). Maybe this recipe should go in there? |
Would it also make sense to add a convenience method to the Output widget to give you back one of these log viewer instances specific to the widget? Thanks for posting this! |
This block: # optional take format
# setFormatter function is derived from logging.Handler
for key, value in kwargs.items():
if "{}".format(key) == "format":
self.setFormatter(value) is probably more natural as # set an optional formatter
if 'format' in kwargs:
self.setFormatter(kwargs['format']) |
Setting to good first issue - we can both add it to the output docs (see #1935) and add a convenience method to return a logger. |
See also jupyterlab/jupyterlab#4319 (comment) for another example. |
I've created a pull request #2268 to implement the convenience function, if it looks good, I'll update the docs based on the function. |
Following discussion with @jasongrout, a rough version of how I accomplished logging to an Output widget.
Benefits of this method are:
with output:
andprint
throughout codeThe particular configuration I used here means that logging messages always appear on top of the Output widget, and force newer messages to the bottom.
Credit: https://stackoverflow.com/questions/3290292/read-from-a-log-file-as-its-being-written-using-python for the code to subclass the handler and extend the
emit()
method.You can log to the widget from anywhere (provided you have imported
main_logger
) by calling `main_logger.info('msg text'), and possibly alter the color (hence colorama).The text was updated successfully, but these errors were encountered: