|  | 
| 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