diff --git a/mlserver/logging.py b/mlserver/logging.py index 224cc5955..299b6c199 100644 --- a/mlserver/logging.py +++ b/mlserver/logging.py @@ -2,6 +2,7 @@ import sys from logging import Formatter, StreamHandler +import logging.config from .settings import Settings @@ -15,6 +16,10 @@ def get_logger(): return logger +def apply_logging_file(logging_settings: str): + logging.config.fileConfig(fname=logging_settings, disable_existing_loggers=False) + + def configure_logger(settings: Settings = None): logger = get_logger() @@ -30,4 +35,7 @@ def configure_logger(settings: Settings = None): if settings and settings.debug: logger.setLevel(logging.DEBUG) + if settings and settings.logging_settings: + apply_logging_file(settings.logging_settings) + return logger diff --git a/mlserver/rest/server.py b/mlserver/rest/server.py index d0ca04b79..98e730404 100644 --- a/mlserver/rest/server.py +++ b/mlserver/rest/server.py @@ -53,7 +53,10 @@ async def delete_custom_handlers(self, model: MLModel): async def start(self): cfg = uvicorn.Config( - self._app, host=self._settings.host, port=self._settings.http_port + self._app, + host=self._settings.host, + port=self._settings.http_port, + log_config=self._settings.logging_settings, ) self._server = _NoSignalServer(cfg) await self._server.serve() diff --git a/mlserver/settings.py b/mlserver/settings.py index 7a208b783..b9b08bfc8 100644 --- a/mlserver/settings.py +++ b/mlserver/settings.py @@ -89,6 +89,10 @@ class Config: `None` to disable it """ + # Logging settings + logging_settings: Optional[str] = None + """Path to logging config file""" + class ModelParameters(BaseSettings): """