|
32 | 32 |
|
33 | 33 | from tornado import httpserver |
34 | 34 | from tornado import web |
35 | | -from tornado.log import enable_pretty_logging |
| 35 | +from tornado.log import enable_pretty_logging, LogFormatter |
36 | 36 |
|
37 | 37 | from notebook.notebookapp import random_ports |
38 | 38 | from ._version import __version__ |
@@ -310,6 +310,15 @@ def ssl_version_default(self): |
310 | 310 | ssl_from_env = os.getenv(self.ssl_version_env) |
311 | 311 | return ssl_from_env if ssl_from_env is None else int(ssl_from_env) |
312 | 312 |
|
| 313 | + _log_formatter_cls = LogFormatter # traitlet default is LevelFormatter |
| 314 | + |
| 315 | + @default("log_format") |
| 316 | + def _default_log_format(self) -> str: |
| 317 | + """override default log format to include milliseconds""" |
| 318 | + return ( |
| 319 | + "%(color)s[%(levelname)1.1s %(asctime)s.%(msecs).03d %(name)s]%(end_color)s %(message)s" |
| 320 | + ) |
| 321 | + |
313 | 322 | kernel_spec_manager = Instance(KernelSpecManager, allow_none=True) |
314 | 323 |
|
315 | 324 | kernel_spec_manager_class = Type( |
@@ -556,8 +565,8 @@ def init_http_server(self): |
556 | 565 | def start(self): |
557 | 566 | """Starts an IO loop for the application.""" |
558 | 567 | super(KernelGatewayApp, self).start() |
559 | | - self.log.info('Jupyter Kernel Gateway at http{}://{}:{}'.format( |
560 | | - 's' if self.keyfile else '', self.ip, self.port |
| 568 | + self.log.info('Jupyter Kernel Gateway {} is available at http{}://{}:{}'.format( |
| 569 | + KernelGatewayApp.version, 's' if self.keyfile else '', self.ip, self.port |
561 | 570 | )) |
562 | 571 | self.io_loop = ioloop.IOLoop.current() |
563 | 572 |
|
|
0 commit comments