Skip to content

Commit 83a8f76

Browse files
shayts7JKL98ISR
andauthored
Use configure_logger to set same format to all log prints (#385)
Co-authored-by: Jonathan Liberman <[email protected]>
1 parent 366826c commit 83a8f76

File tree

14 files changed

+42
-24
lines changed

14 files changed

+42
-24
lines changed

.github/workflows/license-check.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,11 @@ jobs:
5050
with:
5151
requirements: "backend/requirements-all.txt"
5252
fail: "Copyleft,Other,Error"
53-
exclude: '(envier.*0\.5\.0|psycopg2.*2\.9\.3|fqdn.*1\.5\.1|pyzmq.*25\.1\.2|debugpy.*1\.6\.7|certifi.*2024\.8\.30|tqdm.*4\.67\..*|webencodings.*0\.5\.1|torch.*1\.10\.2.*|torch.*1\.11\.0.*|pytorch-ignite.*0\.4\.10.*|torchaudio.*0\.11\.0.*|torchvision.*0\.12\.0.*|terminado.*0\.15\.0|qudida.*0\.0\.4|expiringdict.*1\.2\.2|botocore.*1\.29\.80|orderedmultidict.*1\.0\.1|deepchecks.*)'
53+
exclude: '(category_encoders.*2\.7\..*|attrs.*25\.1\..*|referencing.*0\.36\..*|envier.*0\.5\.0|psycopg2.*2\.9\.3|fqdn.*1\.5\.1|pyzmq.*25\.1\.2|debugpy.*1\.6\.7|certifi.*2025\.1\.31|tqdm.*4\.67\..*|webencodings.*0\.5\.1|torch.*1\.10\.2.*|torch.*1\.11\.0.*|pytorch-ignite.*0\.4\.10.*|torchaudio.*0\.11\.0.*|torchvision.*0\.12\.0.*|terminado.*0\.15\.0|qudida.*0\.0\.4|expiringdict.*1\.2\.2|botocore.*1\.29\.80|orderedmultidict.*1\.0\.1|deepchecks.*)'
5454
# psycopg2 is LGPL 2
55+
# category_encoders is BSD https://github.com/scikit-learn-contrib/category_encoders/tree/master?tab=BSD-3-Clause-1-ov-file
56+
# attrs is MIT https://github.com/python-attrs/attrs/blob/main/LICENSE
57+
# referencing is MIT https://github.com/python-jsonschema/referencing?tab=MIT-1-ov-file
5558
# pyzmq is Revised BSD https://github.com/zeromq/pyzmq/blob/main/examples/LICENSE
5659
# debugpy is MIT https://github.com/microsoft/debugpy/blob/main/LICENSE
5760
# certifi is MPL-2.0 https://github.com/certifi/python-certifi/blob/master/LICENSE

backend/deepchecks_monitoring/bgtasks/alert_task.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ async def execute_monitor(
112112
logger: t.Optional[logging.Logger] = None,
113113
) -> t.List[Alert]:
114114
"""Execute monitor alert rules."""
115-
logger = logger or logging.getLogger('monitor-executor')
115+
logger = logger or configure_logger('monitor-executor')
116116
logger.info('Execution of Monitor(id:%s) for timestamp %s', monitor_id, timestamp)
117117

118118
monitor = t.cast(Monitor, await session.scalar(

backend/deepchecks_monitoring/bgtasks/scheduler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def __init__(
6767
self.engine = engine
6868
self.async_session_factory = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
6969
self.sleep_seconds = sleep_seconds
70-
self.logger = logger or logging.getLogger('alerts-scheduler')
70+
self.logger = logger or configure_logger('alerts-scheduler')
7171

7272
async def run(self):
7373
"""Start alert scheduler."""

backend/deepchecks_monitoring/ee/integrations/slack.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from deepchecks_monitoring.ee.config import SlackSettings
1515
from deepchecks_monitoring.monitoring_utils import CheckParameterTypeEnum as CheckParameterKind
1616
from deepchecks_monitoring.monitoring_utils import MonitorCheckConfSchema as MonitorConfig
17+
from deepchecks_monitoring.monitoring_utils import configure_logger
1718
from deepchecks_monitoring.schema_models import Alert, AlertRule, AlertSeverity, Check, Model, Monitor
1819
from deepchecks_monitoring.utils.alerts import prepare_alert_link
1920
from deepchecks_monitoring.utils.text import format_float
@@ -84,7 +85,7 @@ def __init__(
8485
):
8586
self.settings = settings
8687
self.client = SlackClient()
87-
self.logger = logger or logging.getLogger("slack.installation")
88+
self.logger = logger or configure_logger("slack.installation")
8889
self.state_utils = OAuthStateUtils()
8990

9091
def generate_authorization_url(self, state, redirect_path) -> str:

backend/deepchecks_monitoring/ee/middlewares.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from starlette.types import ASGIApp, Message, Receive, Scope, Send
2020

2121
from deepchecks_monitoring.exceptions import LicenseError
22+
from deepchecks_monitoring.monitoring_utils import configure_logger
2223
from deepchecks_monitoring.public_models import User
2324
from deepchecks_monitoring.utils.auth import CurrentUser
2425

@@ -82,7 +83,7 @@ def __init__(
8283
log_stream_name=log_stream_name,
8384
)
8485
h.setLevel(logging.INFO)
85-
self.logger = logging.getLogger("access-audit")
86+
self.logger = configure_logger("access-audit")
8687
self.logger.addHandler(h)
8788
self.app = app
8889

backend/deepchecks_monitoring/ee/resources.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from deepchecks_monitoring.ee.notifications import AlertNotificator as EEAlertNotificator
1919
from deepchecks_monitoring.features_control import FeaturesControl
2020
from deepchecks_monitoring.integrations.email import EmailSender
21+
from deepchecks_monitoring.monitoring_utils import configure_logger
2122
from deepchecks_monitoring.public_models import User
2223
from deepchecks_monitoring.resources import ResourcesProvider as OpenSourceResourcesProvider
2324

@@ -27,6 +28,8 @@
2728

2829
__all__ = ["ResourcesProvider"]
2930

31+
logger: logging.Logger = configure_logger("server")
32+
3033

3134
class ResourcesProvider(OpenSourceResourcesProvider):
3235
"""Provider of resources."""
@@ -64,7 +67,7 @@ def get_features_control(self, user: User) -> FeaturesControl:
6467
def parallel_check_executors_pool(self) -> "ActorPool | None":
6568
parallel_check_executor_flag = self.settings.parallel_check_executor_flag
6669

67-
logging.getLogger("server").info({
70+
logger.info({
6871
"mesage": f"'parallelCheckExecutorEnabled' is set to {parallel_check_executor_flag}"
6972
})
7073
if parallel_check_executor_flag:

backend/deepchecks_monitoring/integrations/email.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@
2121
from typing_extensions import Self
2222

2323
from deepchecks_monitoring.config import EmailSettings
24+
from deepchecks_monitoring.monitoring_utils import configure_logger
2425

2526
# TODO: change this
2627
TEMPLATES_DIR = pathlib.Path(__file__).absolute().parent.parent / "templates"
2728
templates = Jinja2Templates(directory=str(TEMPLATES_DIR))
2829

29-
logger: logging.Logger = logging.getLogger(__name__)
30+
logger: logging.Logger = configure_logger(__name__)
3031

3132

3233
class Recepient(BaseModel):

backend/deepchecks_monitoring/logic/model_logic.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
from sqlalchemy.ext.asyncio import AsyncSession
2323
from sqlalchemy.orm import selectinload
2424

25-
from deepchecks_monitoring.monitoring_utils import CheckParameterTypeEnum, MonitorCheckConfSchema, fetch_or_404
25+
from deepchecks_monitoring.monitoring_utils import (CheckParameterTypeEnum, MonitorCheckConfSchema, configure_logger,
26+
fetch_or_404)
2627
from deepchecks_monitoring.schema_models import Check, Model, ModelVersion
2728
from deepchecks_monitoring.schema_models.column_type import (SAMPLE_LABEL_COL, SAMPLE_PRED_COL, SAMPLE_PRED_PROBA_COL,
2829
SAMPLE_TS_COL, ColumnType)
@@ -33,6 +34,8 @@
3334

3435
DEFAULT_N_SAMPLES = 5000
3536

37+
logger: logging.Logger = configure_logger('monitor_run_logger')
38+
3639

3740
async def get_model_versions_for_time_range(session: AsyncSession,
3841
model_id: int,
@@ -317,7 +320,7 @@ def run_deepchecks(
317320
if not (msg := getattr(e, 'message', None))
318321
else msg
319322
)
320-
logging.getLogger('monitor_run_logger').exception(
323+
logger.exception(
321324
'For model(id=%s) version(id=%s) check(%s) '
322325
'got exception: %s',
323326
model.id,
@@ -372,7 +375,7 @@ async def get_results_for_model_versions_for_reference(
372375
except errors.DeepchecksBaseError as e:
373376
message = f'For model(id={model.id}) version(id={model_version.id}) check({dp_check.name()}) ' \
374377
f'got exception: {e.message}'
375-
logging.getLogger('monitor_run_logger').error(message)
378+
logger.error(message)
376379
curr_result = None
377380

378381
reduced_outs.append({'result': curr_result})

backend/deepchecks_monitoring/notifications.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from typing_extensions import Self
2020

2121
from deepchecks_monitoring import __version__
22+
from deepchecks_monitoring.monitoring_utils import configure_logger
2223
from deepchecks_monitoring.public_models import Organization, User
2324
from deepchecks_monitoring.schema_models import Check, Model
2425
from deepchecks_monitoring.schema_models.alert import Alert
@@ -85,7 +86,7 @@ def __init__(
8586
self.alert_rule = alert_rule
8687
self.session = session
8788
self.resources_provider = resources_provider
88-
self.logger = logger or logging.getLogger("alert-notificator")
89+
self.logger = logger or configure_logger("alert-notificator")
8990

9091
async def send_emails(self) -> bool:
9192
"""Send notification emails."""

backend/deepchecks_monitoring/resources.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
from deepchecks_monitoring.features_control import FeaturesControl
3333
from deepchecks_monitoring.integrations.email import EmailSender
3434
from deepchecks_monitoring.logic.cache_functions import CacheFunctions
35-
from deepchecks_monitoring.monitoring_utils import ExtendedAsyncSession, json_dumps
35+
from deepchecks_monitoring.monitoring_utils import ExtendedAsyncSession, configure_logger, json_dumps
3636
from deepchecks_monitoring.notifications import AlertNotificator
3737
from deepchecks_monitoring.public_models import Organization
3838
from deepchecks_monitoring.public_models.user import User
@@ -42,6 +42,8 @@
4242

4343
__all__ = ["ResourcesProvider"]
4444

45+
logger: logging.Logger = configure_logger("server")
46+
4547

4648
class BaseResourcesProvider:
4749
"""Base class for all resources provides."""
@@ -348,11 +350,11 @@ def parallel_check_executors_pool(self):
348350
import ray # noqa
349351
from ray.util.actor_pool import ActorPool # noqa
350352
except ImportError:
351-
logging.getLogger("server").info({"message": "Ray is not installed"})
353+
logger.info({"message": "Ray is not installed"})
352354
return
353355

354356
if not ray.is_initialized():
355-
logging.getLogger("server").info({
357+
logger.info({
356358
"message": "Ray is not initialized"
357359
})
358360
return
@@ -389,7 +391,7 @@ def shutdown_parallel_check_executors_pool(self):
389391
wait=tenacity.wait_fixed(1),
390392
retry=tenacity.retry_if_exception_type(KafkaError),
391393
reraise=True,
392-
before_sleep=tenacity.before_sleep_log(logging.getLogger("server"), logging.WARNING),
394+
before_sleep=tenacity.before_sleep_log(logger, logging.WARNING),
393395
)
394396
def ensure_kafka_topic(self, topic_name, num_partitions=1) -> bool:
395397
"""Ensure that kafka topic exist. If not, creating it.
@@ -462,14 +464,14 @@ def _get_mixpanel_event_reporter(self) -> MixpanelEventReporter | None:
462464
if mixpanel is not None:
463465
return mixpanel
464466
if self.settings.enable_analytics is False:
465-
logging.getLogger("server").warning({"message": "Analytics gathering is disabled"})
467+
logger.warning({"message": "Analytics gathering is disabled"})
466468
return
467469
if token := self.settings.mixpanel_id:
468470
mixpanel = MixpanelEventReporter.from_token(token)
469471
self._mixpanel_event_reporter = mixpanel
470472
return mixpanel
471473

472-
logging.getLogger("server").warning({"message": "Mixpanel token is not provided"})
474+
logger.warning({"message": "Mixpanel token is not provided"})
473475

474476
def get_features_control(self, user: User) -> FeaturesControl: # pylint: disable=unused-argument
475477
"""Return features control."""

0 commit comments

Comments
 (0)