Skip to content

Commit 38fc8ad

Browse files
[DOP-21731] - add logging configuration for scheduler (#152)
1 parent 05c9374 commit 38fc8ad

File tree

8 files changed

+45
-8
lines changed

8 files changed

+45
-8
lines changed

poetry.lock

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ scheduler = [
121121
"asyncpg",
122122
"python-multipart",
123123
"python-jose",
124+
"pyyaml",
125+
"coloredlogs",
126+
"python-json-logger",
124127
"celery",
125128
]
126129

syncmaster/scheduler/__main__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import asyncio
44
import logging
55

6+
from syncmaster.scheduler.logging import setup_logging
67
from syncmaster.scheduler.settings import SchedulerAppSettings as Settings
78
from syncmaster.scheduler.transfer_fetcher import TransferFetcher
89
from syncmaster.scheduler.transfer_job_manager import TransferJobManager
@@ -12,6 +13,7 @@
1213

1314
async def main():
1415
settings = Settings()
16+
setup_logging(settings.logging.get_log_config_path())
1517
transfer_fetcher = TransferFetcher(settings)
1618
transfer_job_manager = TransferJobManager(settings)
1719
transfer_job_manager.scheduler.start()

syncmaster/scheduler/logging.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# SPDX-FileCopyrightText: 2023-2024 MTS PJSC
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
import logging
5+
from logging.config import dictConfig
6+
from pathlib import Path
7+
8+
import yaml
9+
10+
logger = logging.getLogger(__name__)
11+
12+
13+
def setup_logging(config_path: Path) -> None:
14+
"""Parse file with logging configuration, and setup logging accordingly"""
15+
if not config_path.exists():
16+
raise OSError(f"Logging configuration file '{config_path}' does not exist")
17+
config = yaml.safe_load(config_path.read_text())
18+
dictConfig(config)

syncmaster/scheduler/settings/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from syncmaster.settings import (
77
CredentialsEncryptionSettings,
88
DatabaseSettings,
9+
LoggingSettings,
910
RabbitMQSettings,
1011
)
1112

@@ -64,6 +65,7 @@ class SchedulerAppSettings(BaseSettings):
6465

6566
database: DatabaseSettings = Field(description="Database settings")
6667
broker: RabbitMQSettings = Field(description="Broker settings")
68+
logging: LoggingSettings = Field(default_factory=LoggingSettings, description="Logging settings")
6769
scheduler: SchedulerSettings = Field(default_factory=SchedulerSettings, description="Scheduler-specific settings")
6870
encryption: CredentialsEncryptionSettings = Field(
6971
default_factory=CredentialsEncryptionSettings,

syncmaster/settings/log/colored.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,7 @@ loggers:
4343
level: DEBUG
4444
handlers: [celery]
4545
propagate: false
46+
scheduler:
47+
handlers: [main]
48+
level: INFO
49+
propagate: false

syncmaster/settings/log/json.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,7 @@ loggers:
4242
level: DEBUG
4343
handlers: [celery]
4444
propagate: false
45+
scheduler:
46+
handlers: [main]
47+
level: INFO
48+
propagate: false

syncmaster/settings/log/plain.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,7 @@ loggers:
4343
level: DEBUG
4444
handlers: [celery]
4545
propagate: false
46+
scheduler:
47+
handlers: [main]
48+
level: INFO
49+
propagate: false

0 commit comments

Comments
 (0)