Alex W.'s Blog

Debug/trace logging in a custom Jupyter kernel

I was unable to get Jupyter to report any logs from my custom kernel, even when I was running jupyter labs --debug.

This was the case for both print calls and logging.{critical,debug,etc.} calls.

To work around it I configured my kernel’s logger to write to a file using logging.basicConfig(filename="kernel.log"). The Jupyter runtime can’t eat these logs up because they aren’t going through stdout. Then I could use calls like logging.debug(some_interesting_variable) to see whatever I wanted.

Side note, when debugging Python in VS-Code, don’t forget to add "justMyCode": false to the debugging config so that you can see third-party libraries.

To debug a Jupyter kernel, use debugpy to allow VS-Code to remotely attach to the process.

Written by Alex Wendland, who is currently exploring fintech at Pinwheel. Here's a Twitter handle, a GitHub, some LinkedIn, ol' Facebook, or a hip Instagram if you're interested.