    def _log_app_versions(self):
        """Log application versions at startup

        Logs versions of jupyterhub and singleuser-server base versions (jupyterlab, jupyter_server, notebook)
        """
        self.log.info(f"Starting jupyterhub single-user server version {__version__}")

        # don't log these package versions
        seen = {"jupyterhub", "traitlets", "jupyter_core", "builtins"}

        for cls in self.__class__.mro():
            module_name = cls.__module__.partition(".")[0]
            if module_name not in seen:
                seen.add(module_name)
                try:
                    mod = import_module(module_name)
                    mod_version = getattr(mod, "__version__")
                except Exception:
                    mod_version = ""
                self.log.info(
                    f"Extending {cls.__module__}.{cls.__name__} from {module_name} {mod_version}"
                )
Log application versions at startup

Logs versions of jupyterhub and singleuser-server base versions (jupyterlab, jupyter_server, notebook)
jupyterhub/singleuser/mixins.py