diff --git a/.env-devel b/.env-devel index 8207e9f8bf6..8ae1e5856d5 100644 --- a/.env-devel +++ b/.env-devel @@ -106,7 +106,7 @@ DYNAMIC_SIDECAR_PROMETHEUS_MONITORING_NETWORKS=[] DYNAMIC_SIDECAR_PROMETHEUS_SERVICE_LABELS={} DYNAMIC_SIDECAR_API_SAVE_RESTORE_STATE_TIMEOUT=3600 # DIRECTOR_V2 ---- - +DYNAMIC_SCHEDULER_LOGLEVEL=DEBUG DYNAMIC_SCHEDULER_PROFILING=1 DYNAMIC_SCHEDULER_STOP_SERVICE_TIMEOUT=3600 diff --git a/packages/service-library/src/servicelib/deferred_tasks/_utils.py b/packages/service-library/src/servicelib/deferred_tasks/_utils.py index dd71341bad6..cd288363465 100644 --- a/packages/service-library/src/servicelib/deferred_tasks/_utils.py +++ b/packages/service-library/src/servicelib/deferred_tasks/_utils.py @@ -30,6 +30,6 @@ async def wrapper(*args, **kwargs): f"Please check code at: '{func.__module__}.{func.__name__}'" ) _logger.exception(msg) - raise RejectMessage(reason=msg) from e + raise RejectMessage(msg) from e return wrapper diff --git a/packages/settings-library/tests/test_utils_logging.py b/packages/settings-library/tests/test_utils_logging.py index 9054b391333..12ddacda314 100644 --- a/packages/settings-library/tests/test_utils_logging.py +++ b/packages/settings-library/tests/test_utils_logging.py @@ -25,11 +25,13 @@ class Settings(BaseCustomSettings, MixinLoggingSettings): ], ) - APPNAME_DEBUG: bool = Field(False, description="Starts app in debug mode") + APPNAME_DEBUG: bool = Field( + default=False, description="Starts app in debug mode" + ) - @validator("LOG_LEVEL") + @validator("LOG_LEVEL", pre=True) @classmethod - def _v(cls, value) -> str: + def _v(cls, value: str) -> str: return cls.validate_log_level(value) # ----------------------------------------------------------- diff --git a/services/autoscaling/src/simcore_service_autoscaling/core/settings.py b/services/autoscaling/src/simcore_service_autoscaling/core/settings.py index 78cde19b50e..600a8cd507c 100644 --- a/services/autoscaling/src/simcore_service_autoscaling/core/settings.py +++ b/services/autoscaling/src/simcore_service_autoscaling/core/settings.py @@ -298,7 +298,7 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings): def LOG_LEVEL(self): # noqa: N802 return self.AUTOSCALING_LOGLEVEL - @validator("AUTOSCALING_LOGLEVEL") + @validator("AUTOSCALING_LOGLEVEL", pre=True) @classmethod def _valid_log_level(cls, value: str) -> str: return cls.validate_log_level(value) diff --git a/services/clusters-keeper/src/simcore_service_clusters_keeper/core/settings.py b/services/clusters-keeper/src/simcore_service_clusters_keeper/core/settings.py index 07fd7deb8bf..ff2e74bbedc 100644 --- a/services/clusters-keeper/src/simcore_service_clusters_keeper/core/settings.py +++ b/services/clusters-keeper/src/simcore_service_clusters_keeper/core/settings.py @@ -311,11 +311,9 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings): "(default to seconds, or see https://pydantic-docs.helpmanual.io/usage/types/#datetime-types for string formating)", ) - CLUSTERS_KEEPER_MAX_MISSED_HEARTBEATS_BEFORE_CLUSTER_TERMINATION: NonNegativeInt = ( - Field( - default=5, - description="Max number of missed heartbeats before a cluster is terminated", - ) + CLUSTERS_KEEPER_MAX_MISSED_HEARTBEATS_BEFORE_CLUSTER_TERMINATION: NonNegativeInt = Field( + default=5, + description="Max number of missed heartbeats before a cluster is terminated", ) CLUSTERS_KEEPER_COMPUTATIONAL_BACKEND_DOCKER_IMAGE_TAG: str = Field( @@ -352,7 +350,7 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings): def LOG_LEVEL(self) -> LogLevel: # noqa: N802 return self.CLUSTERS_KEEPER_LOGLEVEL - @validator("CLUSTERS_KEEPER_LOGLEVEL") + @validator("CLUSTERS_KEEPER_LOGLEVEL", pre=True) @classmethod def valid_log_level(cls, value: str) -> str: return cls.validate_log_level(value) diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 181b1bd4236..8c8fe03e217 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -547,6 +547,7 @@ services: REDIS_PASSWORD: ${REDIS_PASSWORD} DIRECTOR_V2_HOST: ${DIRECTOR_V2_HOST} DIRECTOR_V2_PORT: ${DIRECTOR_V2_PORT} + DYNAMIC_SCHEDULER_LOGLEVEL: ${DYNAMIC_SCHEDULER_LOGLEVEL} DYNAMIC_SCHEDULER_STOP_SERVICE_TIMEOUT: ${DYNAMIC_SCHEDULER_STOP_SERVICE_TIMEOUT} DYNAMIC_SCHEDULER_PROFILING: ${DYNAMIC_SCHEDULER_PROFILING} TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT: ${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT} diff --git a/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/core/settings.py b/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/core/settings.py index 9605619d57d..a60ccc504cd 100644 --- a/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/core/settings.py +++ b/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/core/settings.py @@ -1,5 +1,4 @@ import datetime -from functools import cached_property from pydantic import Field, parse_obj_as, validator from settings_library.application import BaseApplicationSettings @@ -23,14 +22,14 @@ class _BaseApplicationSettings(BaseApplicationSettings, MixinLoggingSettings): # RUNTIME ----------------------------------------------------------- - DYNAMIC_SCHEDULER__LOGLEVEL: LogLevel = Field( + DYNAMIC_SCHEDULER_LOGLEVEL: LogLevel = Field( default=LogLevel.INFO, - env=["DYNAMIC_SCHEDULER__LOGLEVEL", "LOG_LEVEL", "LOGLEVEL"], + env=["DYNAMIC_SCHEDULER_LOGLEVEL", "LOG_LEVEL", "LOGLEVEL"], ) DYNAMIC_SCHEDULER_LOG_FORMAT_LOCAL_DEV_ENABLED: bool = Field( default=False, env=[ - "DYNAMIC_SCHEDULER__LOG_FORMAT_LOCAL_DEV_ENABLED", + "DYNAMIC_SCHEDULER_LOG_FORMAT_LOCAL_DEV_ENABLED", "LOG_FORMAT_LOCAL_DEV_ENABLED", ], description="Enables local development log format. WARNING: make sure it is disabled if you want to have structured logs!", @@ -44,13 +43,9 @@ class _BaseApplicationSettings(BaseApplicationSettings, MixinLoggingSettings): ), ) - @cached_property - def LOG_LEVEL(self): # noqa: N802 - return self.DYNAMIC_SCHEDULER__LOGLEVEL - - @validator("DYNAMIC_SCHEDULER__LOGLEVEL") + @validator("DYNAMIC_SCHEDULER_LOGLEVEL", pre=True) @classmethod - def valid_log_level(cls, value: str) -> str: + def _validate_log_level(cls, value: str) -> str: return cls.validate_log_level(value) diff --git a/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/main.py b/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/main.py index 9a76eff74c4..a2de28aa723 100644 --- a/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/main.py +++ b/services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/main.py @@ -11,9 +11,8 @@ _the_settings = ApplicationSettings.create_from_envs() -# SEE https://github.com/ITISFoundation/osparc-simcore/issues/3148 -logging.basicConfig(level=_the_settings.log_level) # NOSONAR -logging.root.setLevel(_the_settings.log_level) +logging.basicConfig(level=_the_settings.DYNAMIC_SCHEDULER_LOGLEVEL.value) +logging.root.setLevel(_the_settings.DYNAMIC_SCHEDULER_LOGLEVEL.value) config_all_loggers( log_format_local_dev_enabled=_the_settings.DYNAMIC_SCHEDULER_LOG_FORMAT_LOCAL_DEV_ENABLED ) diff --git a/services/dynamic-sidecar/src/simcore_service_dynamic_sidecar/core/settings.py b/services/dynamic-sidecar/src/simcore_service_dynamic_sidecar/core/settings.py index 1ad855e9f1d..4e151e29c00 100644 --- a/services/dynamic-sidecar/src/simcore_service_dynamic_sidecar/core/settings.py +++ b/services/dynamic-sidecar/src/simcore_service_dynamic_sidecar/core/settings.py @@ -165,9 +165,9 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings): def are_prometheus_metrics_enabled(self) -> bool: return self.DY_SIDECAR_CALLBACKS_MAPPING.metrics is not None - @validator("LOG_LEVEL") + @validator("LOG_LEVEL", pre=True) @classmethod - def _check_log_level(cls, value): + def _check_log_level(cls, value: str) -> str: return cls.validate_log_level(value) diff --git a/services/efs-guardian/src/simcore_service_efs_guardian/core/settings.py b/services/efs-guardian/src/simcore_service_efs_guardian/core/settings.py index 2e91ed2e958..7856d991a43 100644 --- a/services/efs-guardian/src/simcore_service_efs_guardian/core/settings.py +++ b/services/efs-guardian/src/simcore_service_efs_guardian/core/settings.py @@ -96,7 +96,7 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings): def LOG_LEVEL(self) -> LogLevel: # noqa: N802 return self.EFS_GUARDIAN_LOGLEVEL - @validator("EFS_GUARDIAN_LOGLEVEL") + @validator("EFS_GUARDIAN_LOGLEVEL", pre=True) @classmethod def valid_log_level(cls, value: str) -> str: return cls.validate_log_level(value) diff --git a/services/invitations/src/simcore_service_invitations/core/settings.py b/services/invitations/src/simcore_service_invitations/core/settings.py index 3c89121e77a..35bdd32ab31 100644 --- a/services/invitations/src/simcore_service_invitations/core/settings.py +++ b/services/invitations/src/simcore_service_invitations/core/settings.py @@ -54,7 +54,7 @@ class _BaseApplicationSettings(BaseCustomSettings, MixinLoggingSettings): def LOG_LEVEL(self): return self.INVITATIONS_LOGLEVEL - @validator("INVITATIONS_LOGLEVEL") + @validator("INVITATIONS_LOGLEVEL", pre=True) @classmethod def valid_log_level(cls, value: str) -> str: return cls.validate_log_level(value) diff --git a/services/payments/src/simcore_service_payments/core/settings.py b/services/payments/src/simcore_service_payments/core/settings.py index 20193c81d65..b56c79322cb 100644 --- a/services/payments/src/simcore_service_payments/core/settings.py +++ b/services/payments/src/simcore_service_payments/core/settings.py @@ -48,7 +48,7 @@ class _BaseApplicationSettings(BaseApplicationSettings, MixinLoggingSettings): def LOG_LEVEL(self): # noqa: N802 return self.PAYMENTS_LOGLEVEL - @validator("PAYMENTS_LOGLEVEL") + @validator("PAYMENTS_LOGLEVEL", pre=True) @classmethod def valid_log_level(cls, value: str) -> str: return cls.validate_log_level(value) diff --git a/services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/core/settings.py b/services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/core/settings.py index c5d3b7b81c0..7658d1da0cd 100644 --- a/services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/core/settings.py +++ b/services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/core/settings.py @@ -64,7 +64,7 @@ class _BaseApplicationSettings(BaseCustomSettings, MixinLoggingSettings): def LOG_LEVEL(self) -> LogLevel: # noqa: N802 return self.RESOURCE_USAGE_TRACKER_LOGLEVEL - @validator("RESOURCE_USAGE_TRACKER_LOGLEVEL") + @validator("RESOURCE_USAGE_TRACKER_LOGLEVEL", pre=True) @classmethod def valid_log_level(cls, value: str) -> str: return cls.validate_log_level(value) diff --git a/services/web/server/src/simcore_service_webserver/application_settings.py b/services/web/server/src/simcore_service_webserver/application_settings.py index aa31ea71d11..eefcc4869fc 100644 --- a/services/web/server/src/simcore_service_webserver/application_settings.py +++ b/services/web/server/src/simcore_service_webserver/application_settings.py @@ -287,9 +287,9 @@ def log_level(self) -> int: level: int = getattr(logging, self.WEBSERVER_LOGLEVEL.upper()) return level - @validator("WEBSERVER_LOGLEVEL") + @validator("WEBSERVER_LOGLEVEL", pre=True) @classmethod - def valid_log_level(cls, value): + def valid_log_level(cls, value: str) -> str: return cls.validate_log_level(value) @validator("SC_HEALTHCHECK_TIMEOUT", pre=True)