From b1aa25f6e36038b82328a12d34802bfd865bee5c Mon Sep 17 00:00:00 2001 From: Christian Gonzalez <61253949+dumaas@users.noreply.github.com> Date: Sat, 24 Sep 2022 11:13:54 -0400 Subject: [PATCH 1/4] Add support for dictConfig with json file --- mlserver/logging.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mlserver/logging.py b/mlserver/logging.py index 299b6c199..6e1555dd7 100644 --- a/mlserver/logging.py +++ b/mlserver/logging.py @@ -1,7 +1,9 @@ +import json import logging import sys from logging import Formatter, StreamHandler +from pathlib import Path import logging.config from .settings import Settings @@ -17,7 +19,12 @@ def get_logger(): def apply_logging_file(logging_settings: str): - logging.config.fileConfig(fname=logging_settings, disable_existing_loggers=False) + if "json" in Path(logging_settings).suffix: + with open(logging_settings) as settings_file: + config = json.load(settings_file) + logging.config.dictConfig(config) + else: + logging.config.fileConfig(fname=logging_settings, disable_existing_loggers=False) def configure_logger(settings: Settings = None): From f92caf1343379ee4998e60a137ffd48e96d23f91 Mon Sep 17 00:00:00 2001 From: Christian Gonzalez <61253949+dumaas@users.noreply.github.com> Date: Mon, 26 Sep 2022 19:16:06 -0400 Subject: [PATCH 2/4] enable passing dictionary to logging_settings --- mlserver/logging.py | 16 +++++++++++----- mlserver/settings.py | 6 +++--- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/mlserver/logging.py b/mlserver/logging.py index 6e1555dd7..5e90d7c1b 100644 --- a/mlserver/logging.py +++ b/mlserver/logging.py @@ -4,6 +4,7 @@ from logging import Formatter, StreamHandler from pathlib import Path +from typing import Dict, Union import logging.config from .settings import Settings @@ -18,13 +19,18 @@ def get_logger(): return logger -def apply_logging_file(logging_settings: str): - if "json" in Path(logging_settings).suffix: - with open(logging_settings) as settings_file: - config = json.load(settings_file) +def apply_logging_file(logging_settings: Union[str, Dict]): + if isinstance(logging_settings, str) and Path(logging_settings).is_file(): + if "json" in Path(logging_settings).suffix: + with open(logging_settings) as settings_file: + config = json.load(settings_file) + logging.config.dictConfig(config) + else: + logging.config.fileConfig(fname=logging_settings, disable_existing_loggers=False) + elif isinstance(logging_settings, Dict): logging.config.dictConfig(config) else: - logging.config.fileConfig(fname=logging_settings, disable_existing_loggers=False) + logger.warning("Unable to parse logging_settings.") def configure_logger(settings: Settings = None): diff --git a/mlserver/settings.py b/mlserver/settings.py index 6ea62bdd3..e58c624f9 100644 --- a/mlserver/settings.py +++ b/mlserver/settings.py @@ -3,7 +3,7 @@ import json import importlib -from typing import Any, List, Optional +from typing import Any, Dict, List, Optional, Union from pydantic import BaseSettings, PyObject, Field from contextlib import contextmanager @@ -137,8 +137,8 @@ class Config: """ # Logging settings - logging_settings: Optional[str] = None - """Path to logging config file.""" + logging_settings: Optional[Union[str, Dict]] = None + """Path to logging config file or dictionary configuration.""" # Kakfa Server settings kafka_enabled: bool = False From 978f202cd630ee01b7cf97b1d558bc90e3eacdac Mon Sep 17 00:00:00 2001 From: Christian Gonzalez <61253949+dumaas@users.noreply.github.com> Date: Tue, 27 Sep 2022 09:02:05 -0400 Subject: [PATCH 3/4] reference logging param for dictConfig --- mlserver/logging.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mlserver/logging.py b/mlserver/logging.py index 5e90d7c1b..5afe035ca 100644 --- a/mlserver/logging.py +++ b/mlserver/logging.py @@ -28,7 +28,7 @@ def apply_logging_file(logging_settings: Union[str, Dict]): else: logging.config.fileConfig(fname=logging_settings, disable_existing_loggers=False) elif isinstance(logging_settings, Dict): - logging.config.dictConfig(config) + logging.config.dictConfig(logging_settings) else: logger.warning("Unable to parse logging_settings.") From 6ea65673512ac175e0d2cf5e43d067fd0a0140b5 Mon Sep 17 00:00:00 2001 From: Christian Gonzalez <61253949+dumaas@users.noreply.github.com> Date: Wed, 28 Sep 2022 14:46:08 -0400 Subject: [PATCH 4/4] resolve linting errors --- mlserver/logging.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mlserver/logging.py b/mlserver/logging.py index 5afe035ca..279c91d6d 100644 --- a/mlserver/logging.py +++ b/mlserver/logging.py @@ -26,7 +26,9 @@ def apply_logging_file(logging_settings: Union[str, Dict]): config = json.load(settings_file) logging.config.dictConfig(config) else: - logging.config.fileConfig(fname=logging_settings, disable_existing_loggers=False) + logging.config.fileConfig( + fname=logging_settings, disable_existing_loggers=False + ) elif isinstance(logging_settings, Dict): logging.config.dictConfig(logging_settings) else: