Skip to content

Commit 91c5942

Browse files
authored
Use repr in logging for exception. (#1185)
And use exc_info=True instead of a separate log.exception to make sure the tb is attached to the right log message. Using `%s` can have issue when logging error as it may hide informations like the type of exception. If for example you have an assertion error, %s will give you the empty string, which is not informative. On the other hand, %r will _at least_ give you `AssertionError()`, which is a start.
1 parent a23562e commit 91c5942

File tree

4 files changed

+10
-9
lines changed

4 files changed

+10
-9
lines changed

jupyter_server/extension/manager.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,8 +360,9 @@ def load_extension(self, name):
360360
except Exception as e:
361361
if self.serverapp and self.serverapp.reraise_server_extension_failures:
362362
raise
363-
self.log.warning("%s | extension failed loading with message: %s", name, e)
364-
self.log.exception("%s | stack trace", name)
363+
self.log.warning(
364+
"%s | extension failed loading with message: %r", name, e, exc_info=True
365+
)
365366
else:
366367
self.log.info("%s | extension was successfully loaded.", name)
367368

jupyter_server/nbconvert/handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ async def get(self, format, path):
135135
lambda: exporter.from_notebook_node(nb, resources=resource_dict)
136136
)
137137
except Exception as e:
138-
self.log.exception("nbconvert failed: %s", e)
138+
self.log.exception("nbconvert failed: %r", e)
139139
raise web.HTTPError(500, "nbconvert failed: %s" % e) from e
140140

141141
if respond_zip(self, name, output, resources):

jupyter_server/serverapp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2618,7 +2618,7 @@ def write_server_info_file(self):
26182618
with secure_write(self.info_file) as f:
26192619
json.dump(self.server_info(), f, indent=2, sort_keys=True)
26202620
except OSError as e:
2621-
self.log.error(_i18n("Failed to write server-info to %s: %s"), self.info_file, e)
2621+
self.log.error(_i18n("Failed to write server-info to %s: %r"), self.info_file, e)
26222622

26232623
def remove_server_info_file(self):
26242624
"""Remove the jpserver-<pid>.json file created for this server.
@@ -2760,7 +2760,7 @@ def launch_browser(self):
27602760
try:
27612761
browser = webbrowser.get(self.browser or None)
27622762
except webbrowser.Error as e:
2763-
self.log.warning(_i18n("No web browser found: %s.") % e)
2763+
self.log.warning(_i18n("No web browser found: %r.") % e)
27642764
browser = None
27652765

27662766
if not browser:

jupyter_server/services/contents/filemanager.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ def _dir_model(self, path, content=True):
287287
try:
288288
os_path = os.path.join(os_dir, name)
289289
except UnicodeDecodeError as e:
290-
self.log.warning("failed to decode filename '%s': %s", name, e)
290+
self.log.warning("failed to decode filename '%s': %r", name, e)
291291
continue
292292

293293
try:
@@ -297,7 +297,7 @@ def _dir_model(self, path, content=True):
297297
if e.errno == errno.ENOENT:
298298
self.log.warning("%s doesn't exist", os_path)
299299
elif e.errno != errno.EACCES: # Don't provide clues about protected files
300-
self.log.warning("Error stat-ing %s: %s", os_path, e)
300+
self.log.warning("Error stat-ing %s: %r", os_path, e)
301301
continue
302302

303303
if (
@@ -636,7 +636,7 @@ async def _dir_model(self, path, content=True):
636636
try:
637637
os_path = os.path.join(os_dir, name)
638638
except UnicodeDecodeError as e:
639-
self.log.warning("failed to decode filename '%s': %s", name, e)
639+
self.log.warning("failed to decode filename '%s': %r", name, e)
640640
continue
641641

642642
try:
@@ -646,7 +646,7 @@ async def _dir_model(self, path, content=True):
646646
if e.errno == errno.ENOENT:
647647
self.log.warning("%s doesn't exist", os_path)
648648
elif e.errno != errno.EACCES: # Don't provide clues about protected files
649-
self.log.warning("Error stat-ing %s: %s", os_path, e)
649+
self.log.warning("Error stat-ing %s: %r", os_path, e)
650650
continue
651651

652652
if (

0 commit comments

Comments
 (0)